为什么同一个变量具有不同的值,具体取决于格式

时间:2015-07-05 15:31:28

标签: c++

#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

2 个答案:

答案 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>