2014-09-18 2 views
0

Моя программа должна вычислить изменение:Как удалить конечный ноль из двойника?

double purchaseAmount = Double.parseDouble(s1); 
double amountGiven = Double.parseDouble(s2); 
double change = purchaseAmount - amountGiven; 
JOptionPane.showMessageDialog(null, change); 

String result = "Change consists of:"; 

Мои изменения подсчитанное в счета и монет. Но как только я получаю к монетам, которые дважды:

double quarters = 0; 
if (change >= .25) { 
    quarters = change/.25; 
    change = change - quarters * .25; 
    result = result + quarters + "quarters"; 
    change = change - quarters % .25; 
} 

Результат дает мне косую .0 к примеру, вместо того, чтобы говорить мне мое изменение составляет 1 двадцать 2 кварталов. Я получаю 1 двадцать 2.0 кварталов. Я пробовал почти все, BigDecimal, NumberFormatDecimalFormat(##.###) У меня уже есть строка в программе и не знаю, как добавить другую.

+0

Вы не должны пытаться делать точные вычисления (которые вы, вероятно, хотите делать, когда говорите о деньгах) с использованием типов с плавающей запятой. – merryprankster

+3

Учитывая, что вы не можете иметь дробное количество кварталов, почему вы все равно сохраняете это в 'double'? (Ваша строка 'change = change-quarters% .25;' выглядит для меня слишком сомнительной ...) Я бы предположил, что вы меняете стоимость от доллара до центов, чтобы начать, и делайте * все * в целочисленной арифметике после этого. Это сделает жизнь намного проще. –

+0

'result + quarters +" quarters "' <- значение 'quarters' должно быть отформатировано в строке там в соответствии с желаемыми правилами; использование 'int' может быть достаточным для« решения »этой проблемы, так как таковая не содержит дробную информацию для запуска. – user2864740

ответ

0

Попытки преобразовать двойное значение в целое или использовать целое число для преобразования (двойным даст вам плавающие значения)

result = result + ((int) quarters) + "quarters"; 

или может использовать Math.round() функцию для округления значения ..

0

Вы не должны использовать поплавки для хранения денежных значений. Вместо этого используйте BigDecimal.
И затем используйте NumberFormat для форматирования результатов для вывода.

Смежные вопросы