#include <stdio.h>

#define pi1 3.141

const float pi = 3.141;

int main()
{
    printf("%f %f", 4 * 10 * pi, 4 * 10 * pi1);
}
输出(在我的机器上)是 125.639999 125.640000

最佳答案

pi1 是一个预处理器符号,在文本中被替换为 double 值。

pi 是一个从 double 初始化的浮点常量,因此会丢失一些精度位(请参阅 IEEE754 规范)。

有关更多详细信息,作为浮点数的 pi 实际上存储为 0x40490625,即 3.1410000324249267578125。 pi1 存储为 0x400920C49BA5E354,即 3.1410000000000000142108547152

关于c - 为什么两个计算给出不同的答案?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21484478/

10-11 16:49