小编Rag*_*jar的帖子

为什么C中的double会比C++打印更少的十进制数字?

我在C中有这个代码,我已经宣布0.1为double.

#include <stdio.h> 
int main() {
    double a = 0.1;

    printf("a is %0.56f\n", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这就是它的印刷品, a is 0.10000000000000001000000000000000000000000000000000000000

C++中的代码相同,

#include <iostream>
using namespace std;
int main() {
    double a = 0.1;

    printf("a is %0.56f\n", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这就是它的印刷品, a is 0.1000000000000000055511151231257827021181583404541015625

有什么不同?当我读到两个都被分配8个字节?C++如何在小数位上打印更多数字?

另外,它怎么能到小数点55位?IEEE 754浮点只有52位的小数,我们可以得到15位十进制数的精度.它以二进制形式存储.为什么它的十进制解释存储更多?

c c++ floating-point precision numbers

63
推荐指数
2
解决办法
4441
查看次数

标签 统计

c ×1

c++ ×1

floating-point ×1

numbers ×1

precision ×1