C语言中怎么让100000000000.00+0.000000000001=100000000000.000000000001

2025-03-22 19:29:56
推荐回答(3个)
回答1:

这个单纯的C 和标准库是无法做到的,IEEE定义的浮点数中最长的也只有16个字节,目前是无法放下

100000000000.000000000001

的所有的有效数字的。


可以使用一些其它的科学运算的库来做到。但是呢,最后这个尾数真的这么重要?

#include

int main()
{

        long double a,b,c;

        a = 100000000000.00;
        b = 0.000000000001;
        c = a + b;

        printf("%.13Lf\n",c);
        printf("sizeof(long double)=%d\n",sizeof(long double));
        return 0;
        //输出:
        //100000000000.0000000000000
        //sizeof(long double)=16



}

回答2:

用long float定义上述浮点型变量试试;

回答3:

在8字节int平台下直接做就是了;在4字节int平台下无法直接做了,只能用字符串自己一位一位做……