如何解决Java中逗号后只保留2位小数
我正在做一个非常简单的操作。 代码如下:
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 举报,一经查实,本站将立刻删除。