永发信息网

C语言数据精度

答案:2  悬赏:70  手机版
解决时间 2021-03-25 06:41
C语言数据精度
最佳答案
计算机内部用2进制,我们输入10进制,
所以 输入时 10进制 要转换为 2进制,
输出时,2进制 要转换为 10进制。
浮点型数据 10进制 要转换为 2进制,常常是 “化不净” 的。
如同 算术里的 1.0/3.0 = 0.333333333333333333333333333....

浮点型数据 float 用 32 位 2 进制, double 用 64 位 2 进制, 由于位数的限制。 float 有效数字 精度 只有 6-7 位 10进制,double 精度 14 位。

控制让它输出很多位小数,远远超过float的精度范围,计算机能输出,但超出 6-7 位 的数值不可靠。例如:
float x=0.3;
printf("%30.20f",x);
计算机输出: 0.30000001192092896000
显然 后面的小数 1192092896000 没实际意义。追问后面的小数 1192092896000 这个是计算机随机产生的么?它为什么不报错呢?追答不是随机产生,是按小数20的格式要求(%30.20f),由转换运算产生的。没有错误,当然不报错。

它只不过是由于 2-10,10-2 转换, 含截断误差而已。追问它只不过是由于 2-10,10-2 转换, 含截断误差而已。

这句话什么意思。。刚入门,菜鸟求详解。。追答float x=0.3;
2-10, 输入时 10进制 要转换为 2进制, 含截断误差
10-2 , 2进制 要转换为 10进制, 含截断误差
float x=0.3;
printf("%30.20f\n",x); printf("%30.19f\n",x); printf("%30.18f\n",x);
printf("%30.17f\n",x); printf("%30.16f\n",x);
输出:
0.30000001192092896000
0.3000000119209289600
0.300000011920928960
0.30000001192092896
0.3000000119209290
全部回答
什么精度问题啊,在2进制的世界里,讨论这个是不现实的
计算机是二级制存储的,这个你应该知道
当十进制转换为二进制的时候,小数不是的存储时近似的(除了一小部分的小数)
这一小部分的数是2的n次方分之几,如0.5.0.25.0.375等,也就是1/2,1/4,3/8等数据
除了这些外,其他的都是近似存储的
不信,你可以手工计算一下十进制的0.1,化成二进制后,这是一个无限小数
所以啊,讨论精度问题就不现实了
因为存储的就是一个近似的数值,那么打印出来后,不可能是精确的
有一个办法可以做到,不过存储量要很大,就是用字符串来存储小数,这个道理你应该能明白,呵呵追问对,是有的小数不可能准确化为二进制的。
C语言中可以控制让它输出很多列,很多位小数,远远超过float的精度范围,那有什么后果?
比方说float a=0.375
printf("%40.20f",a)
我试过编译不会出错,那么显示出来的那么多小数位数显然不可能在f数据中储存下,那么它们是哪里来的?追答我编译了一下,后面全部是0
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
武松打虎里,说老虎用三个动作,一扑,一掀,
有招临时工的吗,工资曰结
外墙勾缝用黑粉好不好
折苹果手机都使用什么什么种螺丝刀
为什么宋朝多女将?
“清风徐来 水波不兴” 详细的意思是?
276+315用估算
求下联《忆祖师渡江》 大千无常亦有常,西方
单选题将陆地生态系统区分为森林、草原、农田
小学生形容奶奶看书短文
生产直径1.2米的塑料圆桌需要多大的注塑机
丧尸国度第四季出了吗
承德宽广超市嘉禾超市农业银行信用卡周几返现
急急急!急急!新买的运动鞋的鞋底很硬怎么办
为什么女人吃的多老的快
推荐资讯
赵峰的个人简历
埒西一邮政储蓄所地址
8号中断内容!汇编语言 要用int 8 可是我不知
新郎新娘入洞房,没有床。 猜一个字
非营利组织的英文简写是
“雪白”的近义词是什么?
QQ魔域传送卷轴在哪买?
该怎么开始集邮?集什么邮票好?
龙川高铁征地拆迁办公室:赔偿村民,田地,山
(22分)阅读图文材料,回答问题。材料一 图
有没有像稻荷恋之歌那样的动漫?
填空,采什么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?