Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Dimov79 avatar Dimov79 6 Точки

Закръгляне на число

Здравейте, 

имам следният въпрос. Искам да закръгля тип double до втория знак след десетичната запетая. 

имам следният пример:

Например ако diff = 0.029999999, как мога да го закръгля до втория знак след десетичната запетая.

double diff = resto - sumCoins;


 if (diff >=2) {
     sumCoins +=2;
 } else if (diff>=1) {
     sumCoins +=1;
 } else if (diff >= 0.50) {
     sumCoins += 0.50;
 } else if (diff >= 0.20) {
     sumCoins += 0.20;
 } else if (diff >= 0.10) {
     sumCoins += 0.10;
 } else if (diff >=0.05) {
     sumCoins +=0.05;
 } else if (diff >=0.02) {
     sumCoins +=0.02;
 } else if (diff >= 0.01) {
     sumCoins +=0.01;
 }

 

Тагове:
0
Programming Basics with Java
SinanAliman avatar SinanAliman 1 Точки

diff = Double.parseDouble(String.format("%.2f", diff)); 

0
Dimov79 avatar Dimov79 6 Точки

Здравей, 

четох затова, но исках да видя има ли друг вариант директно при определянето на double променливата да има възможност да се посочи до кой знак да бъде закръглянето. 

0
damesova avatar damesova 203 Точки

Използва се така нареченото форматиране като в плейсхолдъра се задава формата, а след запетаята се изброяват съответстващите им променливи.

В твоя случай имаш само една променлива diff от тип double. Плейсхолдърът за double  е %f, а конкретно до втроия знак след десетичната запетая е така: %.2f.

Дано да се станало по-ясно така :)

 

Но защо правиш толкова иф-елзове? Просто sumCoins += diff; е достатъчно. Някакво условие ли има такова?

 

А пък ако имаш условие да закръгряш нагоре или надолу, а не да форматираш до втори знак, се прави вече друго нещо.

 

0
07/07/2019 19:31:32
Dimov79 avatar Dimov79 6 Точки

Здравей,  

блаодаря ти за отговора, чел съм за placeholdera. Например този линк за форматиране на числа:

https://softuni.bg/forum/247/csharp-basics-formatirane-na-chisla 

Решавам една задача с while. Въпросът ми беше възможно ли директно в променливата да посоча позицията до която се закръгля, например до втория знак %.2f

double diff = resto - sumCoins;

или винаги трябва да го дефинирам отделно. 

 

 

 

0
09/07/2019 17:21:17
damesova avatar damesova 203 Точки

Когато говорим за форматиране, това означава, че ние не въздействаме върху стойността на числото, а само върху начина, по-който се показва (изписва) , например при печат или визуализация на екрана. Пример за форматиране: 

double x = 12.34567;

System.out.printf("Вашето число е: %.2f%n", x);

В този случай ще се изпише на конзолата: Вашето число е: 12,34

 

Когато говорим за закръгляне, тогава ние променяме стойността. Такъв пример е: 

double y;
        double z;
        double x = 12.34567;
        y = Math.floor(x);
        z = Math.ceil(x);

        System.out.println("Вашето число е: " + x);
        System.out.println("Закръгленото число надолу е: " + y);
        System.out.println("Закръгленото число нагоре е: " + z);

На конзолата ще се изпише следното:

Вашето число е: 12.34567
Закръгленото число надолу е: 12.0
Закръгленото число нагоре е: 13.0

И още нещо, свързано с темата е следния пример:

System.out.printf("Новото число, което е закръгленото Z, но с " +
                "отрязана дробна част е: %.0f", z);

В този допълнителен ред към предходния код отрязваме дробната част на числото z, но пак подчертаваме, че това е само форматиране при печат. Така на конзолата ще се изпише следното:

Новото число, което е закръгленото Z, но с отрязана дробна част е: 13

Можеш да разглеждаш и как работи Math.round().

1
08/07/2019 00:49:34
Dimov79 avatar Dimov79 6 Точки

Здравей, 

благодаря ти за отговора. Запознат съм с  повечето от тези неща. 

Имах друго предвид, може би не съм формулирал въпроса си добре. Намерих това, което ми беше необходимо. 

Благодаря ти отново. 

Успех :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.