最近有一个需求,原有整数计算,改成小数计算,保留一位小数。
于是按照需求,将数据结构由 int 改为 float ,计算时采用round()
方法来保留小数位。
第一版代码如下:
a = 0.1000001
b = round(a+0.1,1)
c = 0
c += round(a,1)
修改完成后进行测试,多次测试过程中发现,b 结果正确,但 c 明明已经使用了round(a,1)
保留一位小数,但最后的结果会出现 0.30000000000000004 这样的结果。
实际上 c += round(a,1) 是等同于 c = c + round(a,1)
,这样在多次计算之后,c 因为加上了 float 类型,从 int 变成了 float,而我们知道,在计算机中,浮点型的精度是有限的,它无法准确的表示,只能用一个近似值代替,而当使用这些近似值代替的浮点数进行运算时,本质上是这些近似值参与运算,出来的结果也就是近似结果。
所以最终代码应该为:
a = 0.1000001
b = round(a + 0.1, 1)
c = 0
c = round(c + a, 1)
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!