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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...