2014-09-11 2 views
1

Я работаю над приложением типа кассового аппарата, у меня возникают проблемы при разделении долларов и центов. Я могу получить доллары самим собой, но не центами. Здесь я и сейчас.Java Change Rounding

изменение 126.7328 долларов 126 центов 7328

Я хочу центов, чтобы быть просто 73 вместо 7328.

String changeString = Double.toString(change); 
    String[] parts = changeString.split("\\."); 
    String part2 = parts[1]; 
    double cents5 = Double.parseDouble(part2); 
    int cents = (int)cents5 

Любая помощь будет оценена.

+0

почему:

NumberFormat myCurrencyFormat = NumberFormat.currencyInstance(); String moneyString = myCurrencyFormat.format(change); 

Или, если вы не хотите, чтобы увидеть символ денег, используйте DecimalFormat "\\". а не просто "."? –

+1

Вы не должны использовать значения с плавающей запятой за деньги. Используйте целое или длинное значение для центов, и по модулю 100 для изменения. См. Этот вопрос: http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency –

+1

Или используйте BigDecimal (хотя остерегайтесь спуска на безумие при попытках сравнений и равных) – stringy05

ответ

0

Формат ваших данных с помощью NumberFormat объекта:

DecimalFormat decimalFormat = new DecimalFormat("0.00"); 
String moneyString = decimalFormat.format(change); 
+0

, но я просто хочу, чтобы это было 2-значное число, например 73 – user3808597

+0

@ user3808597 Затем сделайте то, что кто-то уже предложил ... tackoverflow.com/questions/3730019/why -не использование двойное или обращение к-представлять валюту –