鱼C论坛

 找回密码
 立即注册
查看: 1633|回复: 9

[已解决]关于浮点型和整形相加

[复制链接]
发表于 2020-3-14 23:49:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> t
3
>>> p
3.1415
>>> float(t)
3.0
>>> float(p)
3.1415
>>> q = float(t) + p
>>> q
6.141500000000001
>>>

类似如上,在shell中t = 3为整形,p = 3.1415为浮点型,单独转为浮点型时没啥问题,但两者相加时候就有最后面的1了,这个在代码中遇到该如何处理?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-15 00:03:29 | 显示全部楼层
a = 6.141500000000001
print('%.2f' % a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 00:04:58 | 显示全部楼层
a = 6.141500000000001
print('%.4f' % a)
看你想要保留几位小数,如果想要保留2位就.2f,4位就.4f
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 00:07:55 | 显示全部楼层
你要几位小数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 00:10:45 | 显示全部楼层
说简单点,精度问题,没法解决,除非用decimal或fraction
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 00:11:23 | 显示全部楼层

兄弟也熬夜啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 00:23:20 | 显示全部楼层

我有时差
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 00:25:05 | 显示全部楼层
浮点数在计算机中是以二进制存储的,分为符号位、小数数部分和指数部分,因此浮点运算的结果就会存在精度问题。这是无法解决的。
但是若只是想看着美观,可以用print('%.4f' %a),其中这个4是小数点后的位数想看几位就写几
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 00:38:38 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-15 09:29 编辑

       在计算机内部,一个浮点数是通过四个字节的组合来进行表达的,称为 32 位浮点,四个字节根据 IEEE 浮点数编码规范来表达一个浮点数。我们知道,四个字节最多可以表达 0xFFFFFFFF = 429467295 个不同的数值,可以想象,32 位浮点所能表达不同浮点数的数量也是有限的。
       考虑一下用 5 个数来表达 0 ~ 20之间的不同数值,这 5 个数必然是 0、5、10、15、20,那么,根据四舍五入的原则,2 会表达为 0,8 、10、12 会表达为 10,13 会被表达为 15,18、19、20 会被表达为 20,这种情形就是近似表达。4 个字节对数值的表达能力有限,而我们对浮点数表达能力的预期却是无限的,用有限数量的数值来表达无限数量的浮点数,这就决定了浮点数的表达必然是近似的。也就是说,对浮点数而言,不可能做到想表达多少就能得到多少,存在误差将是必然的。就好比前面例子中的 8、10、12 三个完全不同的数都会表达为 10 的情形,因为在 5 个数值的表达体系中,8 和 12 根本就不存在。
       所以,任何时候,浮点数运算出现一些细微的误差完全不必理会和在意,一切都是正常的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 08:08:02 | 显示全部楼层    本楼为最佳答案   
请见:https://fishc.com.cn/thread-159225-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表