中易网

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位。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息