java中的浮点乘法

nik*_*vas 1 java rounding multiplication

可能的重复:
如何在 Java 中将数字四舍五入到 n 个小数位

在 Java 中将两个数字相乘时会发生这种情况:

double a = 9.495 * 100;
Run Code Online (Sandbox Code Playgroud)

预期结果:

a = 949.5;
Run Code Online (Sandbox Code Playgroud)

但是得到的结果是:

a = 949.4999999999999
Run Code Online (Sandbox Code Playgroud)

当我尝试将数字 9.495 舍入两位小数时,结果是 9.49 而不是 9.50

任何想法如何解决这个问题?

Cos*_*atu 6

如果你想要精确的浮点计算,不要使用floatordouble类型,而是使用BigDecimal类。