C语言刚上路 求大佬告诉我 为什么
答案:1 悬赏:0
解决时间 2021-01-17 07:21
- 提问者网友:喧嚣尘世
- 2021-01-17 00:03
C语言刚上路 求大佬告诉我 为什么
最佳答案
- 二级知识专家网友:第幾種人
- 2021-01-17 00:59
#include
#include
int main()
{
float a=123.4567891123;
double b= 123.4567891123;
printf("a=[%.10f] b=[%.10lf]
",a,b);
return 0;
}
a=[123.4567871094] b=[123.4567891123]
Press any key to continue
看明白了吗?
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,
其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,
也即float的精度为6~7位有效数字;double:2^52 = 4503599627370496,一共16位,
同理,double的精度为15~16位。
#include
int main()
{
float a=123.4567891123;
double b= 123.4567891123;
printf("a=[%.10f] b=[%.10lf]
",a,b);
return 0;
}
a=[123.4567871094] b=[123.4567891123]
Press any key to continue
看明白了吗?
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,
其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,
也即float的精度为6~7位有效数字;double:2^52 = 4503599627370496,一共16位,
同理,double的精度为15~16位。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息