给输入22222222222222222加倍,但输出为22222222222222224224.000000为什么?

时间:2018-10-24 15:29:52

标签: long-double

#include <stdio.h>
int main()
{
    printf("Enter the number:");
    double num;
    scanf("%lf",&num);
    printf("%lf\n",num);
}

输入:22222222222222222
输出:22222222222222224.000000
为什么它给出的输出不像给定的那样。

1 个答案:

答案 0 :(得分:0)

通常在x86 extended precision format中实现长双精度。其中的小数部分具有63位,并且大约个有效数字。您的电话号码长17位,发生的情况是该电话号码太大,无法精确存储在63位可用地址中。

如果始终是整数(无小数部分),请考虑使用“ long long”表示此数字。