2 yxpandjay yxpandjay 于 2017.09.11 14:51 提问

请问C语言中浮点数的舍入规则是什么?

图片说明

初学C语言,不太明白内置的舍入规则到底是怎样的。为什么3.25和3.35都舍入到3.3了。

(PS:我不是想四舍五入TOT 我知道+0.05就可以了。我想知道的是float默认的舍入规则是什么。。)

2个回答

kingslave1
kingslave1   2017.09.11 16:12
已采纳

C语言中float,double等类型,在内存中的结构
float在内存中的存储方式比较复杂,不能简单地理解为四舍五入或者向上取整或向下取整

swordsmansnow
swordsmansnow   2017.09.11 16:11

"四舍六入五成双",也即"4舍6入5凑偶"这里"四"是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进。(0是偶数)
具体规则如下:  1.小于5舍去,即舍去部分的数值小于保留部分的末位的半个单位,则末位不变;   2.大于5进1,即舍去部分的数值大于保留部分的末位的半个单位,则末位加1;   3.等于5时取偶数,即舍去部分的数值,等于保留部分的末位的半个单位,则   末位凑成偶数,即当末位为偶数时,末位不变;当末位为奇数时,末位加1.  举例,用上述规则对下列数据保留3位有效数字:  9.8249=9.82,9.82671=9.83   9.8251=9.83,9.8350 =9.84   9.8250=9.82,9.82501=9.83
按以上规则来看的话,你的输出结果应该是 3.2,3.2,3.4,3.4.3.6然而并不是。
具体原因不明。

Csdn user default icon
上传中...
上传图片
插入图片