Софтуерно Инженерство
Loading...
Dimov79 avatar Dimov79 4 Точки

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

Здравейте, 

имам следният въпрос. Искам да закръгля тип 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
damesova avatar damesova 198 Точки

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

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

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

 

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

 

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

 

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

Здравей,  

блаодаря ти за отговора, чел съм за 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 198 Точки

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

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 4 Точки

Здравей, 

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

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

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

Успех :)

0