为 double 提供输入 22222222222222222 但输出为 22222222222222224.000000 为什么?
Giving input 22222222222222222 for double but the output is 22222222222222224.000000 Why?
#include <stdio.h>
int main()
{
printf("Enter the number:");
double num;
scanf("%lf",&num);
printf("%lf\n",num);
}
输入:22222222222222222
Output:22222222222222224.000000
为什么它给出的输出与给定的不一样。
long double 通常在 x86 extended precision format 中实现。它的小数部分有 63 位,并且有 大约 18 个有效数字。您的号码有 17 位长,而发生的情况是该号码太大而无法精确存储在可用的 63 位中。
如果它总是一个整数(没有小数部分),那么考虑使用 "long long" 来表示这个数字。
#include <stdio.h>
int main()
{
printf("Enter the number:");
double num;
scanf("%lf",&num);
printf("%lf\n",num);
}
输入:22222222222222222
Output:22222222222222224.000000
为什么它给出的输出与给定的不一样。
long double 通常在 x86 extended precision format 中实现。它的小数部分有 63 位,并且有 大约 18 个有效数字。您的号码有 17 位长,而发生的情况是该号码太大而无法精确存储在可用的 63 位中。
如果它总是一个整数(没有小数部分),那么考虑使用 "long long" 来表示这个数字。