问题描述
我正在做一个非常简单的操作。 代码如下:
float expectedTotal = 32.97;
float firstPrice = 7.99;
expectedTotal -= firstPrice;
当我断言时,expectedTotal 应该是 24.98,但我最终得到一个错误提示:
expected [24.980001] but found [24.98]
所以第一个问题是:这个 0.000001 是从哪里来的?
我在其他 stackoverflow 中读到,用浮动处理货币并不理想,我应该使用 DecimalFormat。 我尝试使用以下代码:
DecimalFormat df = new DecimalFormat("#.##");
String s = String.valueOf(expectedTotal);
String newString = df.format(s);
expectedTotal = Float.valueOf(newString);
但收到错误:
java.lang.IllegalArgumentException: Cannot format given Object as a Number
我也尝试过解析:
DecimalFormat df = new DecimalFormat("#.##");
String s = df.format(expectedTotal);
try {
expectedTotal = (float) df.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
基本上,我想要的只是 expectedTotal
作为只有 2 个小数的浮点数。
任何人都可以帮助我吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)