为什么两个计算给出不同的答案?

Sid*_*iri 3 c floating-point constants c-preprocessor

#include<stdio.h>

#define pi1 3.141

const float pi = 3.141;

int main()    
{    
    printf("%f %f",4*10*pi, 4*10*pi1);  
}
Run Code Online (Sandbox Code Playgroud)

输出(在我的机器上)是125.639999 125.640000

Joe*_*cou 5

pi1是一个预处理器符号,在文本上被替换为double.

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

有关更多详细信息,pi作为float实际上存储为0x40490625,即3.1410000324249267578125.pi1存储为0x400920C49BA5E354,即3.1410000000000000142108547152