我在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位十进制数的精度.它以二进制形式存储.为什么它的十进制解释存储更多?