针对浮点符号错误我能做些什么?

What can I do against floating point notations Errors?

我需要将 float 乘以 100,以便从 转换为 cents。我遇到的问题是,大数的值计算不正确。

例如:

String aa = "1000009.00";
aa = aa.replaceAll(",", ".");
float bb = Float.parseFloat(aa);
bb=Math.round(bb*100);
System.out.println(bb);

我得到的是:1.00000896E8

所以我知道这是因为 Java 中 float 的工作方式。 我一直在寻找答案,但人们总是说 "use Math.round()" 这对我不起作用。

我能做些什么来防止这种情况发生?

您可以使用 BigDecimal::multiply 例如:

String aa = "1000009.00";
aa = aa.replaceAll(",", ".");
BigDecimal fullValue = new BigDecimal(aa);

System.out.println("full value  = " + fullValue.multiply(new BigDecimal(100)));

输出

full value  = 100000900.00

您可以使用 double 以获得更高的精度(如果您希望处理非常大的数字,则可以使用 BigDecimal)。

String aa = "1000009.00";
double bb = Double.parseDouble(aa);
bb=Math.round(bb*100);
System.out.printf("%.2f", bb); // it prints only two digits after the decimal point

输出

100000900.00