yxpandjay
2017-09-11 06:51
采纳率: 50%
浏览 2.5k
已采纳

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

图片说明

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • breezefaith 2017-09-11 08:12
    已采纳

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

    已采纳该答案
    打赏 评论
  • swordsmansnow 2017-09-11 08: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然而并不是。
    具体原因不明。

    打赏 评论

相关推荐 更多相似问题