#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
float x=1234.56;
printf("%10f\n", x);
return 0;
}
为什么x改变值,不应该是1234.560000。它显示1234.560059
答案 0 :(得分:0)
只有那么多的值可以完全表示为float
,而1234.56不是其中之一:
public class WhatsTheFloatingPoint
{
public static void main(String[] args)
{
float x = 1234.56f;
BigDecimal y = new BigDecimal(x);
System.out.println(y);
}
}
此程序打印实际使用的最接近的值:1234.56005859375
答案 1 :(得分:0)
它的价值总是:
1234.560059...
当您显示较少的数字时,它将舍入映射到二进制分数所需的微小额外数量
这就是浮点等价通常用一些可接受的epsilon或微小的差异来完成的原因。
请注意,金额可能因架构和编译器选项而异[/ p>