可能重复:
Java:计算返回错误答案?
请解释为什么以下程序没有给出正确的输出。
class Test
{
public static void main(String aa[])
{
float a=16.15 f;
float b =10.0f;
float c =a-b;
System.out.println(c);
}
}
/****************/ 输出:-6.1499996
可能重复:
Java:计算返回错误答案?
请解释为什么以下程序没有给出正确的输出。
class Test
{
public static void main(String aa[])
{
float a=16.15 f;
float b =10.0f;
float c =a-b;
System.out.println(c);
}
}
/****************/ 输出:-6.1499996
根据http://en.wikipedia.org/wiki/IEEE_floating-point_standard,问题在于浮动本身,而不是您的代码
对于这种情况,请考虑使用doubles 或BigDecimals
这是浮点数无法准确存储十进制值的完全正常结果。
因为浮点数,以 2 为底数不能完全表示 16.15,因此减法的结果不完全是 -6.15。
该类型float没有足够好的精度来返回 -6.15。double可能还不够,浮点计算总是有一些误差范围。