请解释为什么以下程序没有给出正确的输出。
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
答案 0 :(得分:1)
根据http://en.wikipedia.org/wiki/IEEE_floating-point_standard
,浮动本身而不是代码存在问题对于这种情况,请考虑使用double
s或BigDecimal
s
答案 1 :(得分:0)
浮点数无法正确存储十进制值,这是完全正常的结果。
答案 2 :(得分:0)
因为浮点数,基数2不能精确地代表16.15,因此减法的结果不完全是-6.15。
答案 3 :(得分:-1)
类型float
没有足够的精度来返回-6.15。 double
也可能不够,浮点计算总是有一些误差。