2014-09-11 230 views
1

我在收银机类型的应用程序工作,我分离美元和美分遇到问题。我可以通过自己而不是美分获得美元。这是我目前所在的地方。Java更改舍入

变化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 “\\”。而不仅仅是“。”? – 2014-09-11 01:10:41

+1

您不应该使用浮点值来获取金钱。对美分使用整数或长整型值,并对模数100进行更改。看到这个问题:http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency – 2014-09-11 01:12:04

+1

或者使用BigDecimal(尽管当尝试比较时要注意下降到疯狂,并且等于) – stringy05 2014-09-11 01:14:05

回答

0

格式使用的NumberFormat对象数据:

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

这显然已经太久了,但我只是希望它是一个2位数字,如73 – user3808597 2014-09-11 01:15:59

+0

@ user3808597然后做别人已经建议的内容...... tackoverflow.com/questions/3730019/why - 未使用的双 - 或float到代表货币 – 2014-09-11 01:18:36