Loading...
HPetrov avatar HPetrov 822 Точки

Принтиране на реални числа

Захванах се да решавам някои от задачите дадени на изпита по C# и на една задача трябва да се принтират разни числа. Та когато ползваме double или float принтира винаги с десетична запетая (3 = 3.0). Решение на проблема е ако се ползва целочислен тип или се cast-ва към такъв но в случая не е опция. Идеята е като примерно се въведе 1.5 да се принтира 1.5, ако е 1 -> 1 (не 1.0). Опитах с BigDecimal и се получава (1 -> 1, 1.5 -> 1.5 и т.н.) обаче тогава пък възниква проблем когато се правят аритметични операции с него. Например ако съберем 1.5 + 1.5 = 3 обаче го принтира като 3.0 въпреки, че е BigDecimal. По подобен начин и други операции (1.75 + 1.75 = 3.50). Друг вариант е самите числа преди да се принтират да се проверяват дали имат някакви стойности след десетичната запетая и ако има да се принтират както са ти, ако ли не да се кастват към целочислени. Този вариант обаче малко не ме кефи и ми е интересно дали някой може да сподели 3-та опция :)

0
Java Advanced
iliya_boyanov avatar iliya_boyanov 28 Точки

public class tests{
public static void main(String[] args){
Double a = 1.75;
Double b = 1.75 ;
System.out.println(a+b);
}
}

result = 3.5

Привет, при мен всичко е ок. JDK версията Еклипс версията как са, да не се е омазало нещо?

EDIT : 1.5 + 1.5 = 3.0

1
HPetrov avatar HPetrov 822 Точки

Хмм сега ме накара да се замисля дали не е от placeholder-ите, които ползвам. По начало са малко гадни на Java, като нищо може от тях да е проблема, ей сега ще видя.

Edit: Не е от това но мисля, че и то си ги форматира някак си. Иначе си прав за 1.75 + 1.75 но явно всичко е както трябва само когато след действието има нещо след десетичната запетая, иначе си оставя по едно ".0" да има.

0
iliya_boyanov avatar iliya_boyanov 28 Точки

Погледни този метод може да ти е полезен ;)

public static String formatDoubles(double d){
if(d==(int)d){
return String.format("%d",(int)d);
}
else {
return String.format("%s", d);
}
}

2
HPetrov avatar HPetrov 822 Точки

В крайна сметка реших да ползвам DecimalFormater метода като в конструктора му подам някакъв pattern, който ми върши работа. Все пак мерси за предложенията :)

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