首页 > 解决方案 > 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 位小数的浮点数。任何人都可以帮助我吗?

标签: javafloating-pointdecimalformat

解决方案


推荐阅读