鱼C论坛

 找回密码
 立即注册
查看: 2963|回复: 11

刚学python,问个问题

[复制链接]
发表于 2015-11-20 22:35:25 | 显示全部楼层 |阅读模式

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

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

x
为什么会这样子,这是出问题了吗
QQ截图20151120223559.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-21 09:56:59 | 显示全部楼层
  1. >>> 12*2.3
  2. 27.599999999999998
  3. >>>
复制代码

都这样,没有问题!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-21 10:32:54 | 显示全部楼层
~风介~ 发表于 2015-11-21 09:56
都这样,没有问题!

请问我想让它正常计算怎么办呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-21 11:12:11 | 显示全部楼层
shangchao 发表于 2015-11-21 10:32
请问我想让它正常计算怎么办呢


正常计算 —— 这个就是正常的!
我理解你的意思,你低估了“正常计算”浮点数的难度~ 不信可以自己百度下哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-21 14:00:34 | 显示全部楼层
这是这样的,
参看这个帖子:https://github.com/qiwsir/StarterLearningPython/blob/master/103.md
对浮点数的计算精度讲得很清楚
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-21 14:38:53 | 显示全部楼层
天也高云也淡 发表于 2015-11-21 14:00
这是这样的,
参看这个帖子:https://github.com/qiwsir/StarterLearningPython/blob/master/103.md
对浮 ...

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-21 14:44:40 | 显示全部楼层
好吧,仔细研究后,这是结论。希望对大家有帮助
原因在于十进制和二进制的转换上,computer用的是二进制进行计算,上面的例子中,我们输入的是十进制,她就要把十进制的数转化为二进制,然后再计算。但是,在转化中,浮点数转化为二进制,就出问题了。

例如十进制的0.1,转化为二进制是:0.0001100110011001100110011001100110011001100110011...

也就是说,转化为二进制后,不会精确等于十进制的0.1。同时,计算机存储的位数是有限制的,所以,就出现上述现象了。

这种问题不仅仅是Python中有,所有支持浮点数运算的编程语言都会遇到,它不是Python的bug。

明白了问题原因,怎么解决呢?就Python的浮点数运算而言,大多数机器上每次计算误差不超过 2**53 分之一。对于大多数任务这已经足够了,但是要在心中记住这不是十进制算法,每个浮点数计算可能会带来一个新的舍入错误。

一般情况下,只要简单地将最终显示的结果用“四舍五入”到所期望的十进制位数,就会得到期望的最终结果。

对于需要非常精确的情况,可以使用 decimal 模块,它实现的十进制运算适合会计方面的应用和高精度要求的应用。另外 fractions 模块支持另外一种形式的运算,它实现的运算基于有理数(因此像1/3这样的数字可以精确地表示)。最高要求则可是使用由 SciPy提供的 Numerical Python 包和其它用于数学和统计学的包。列出这些东西,仅仅是让看官能明白,解决问题的方式很多,后面会用这些中的某些方式解决上述问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-22 22:25:36 | 显示全部楼层
好专业啊,赞一下楼主~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 10:10:33 | 显示全部楼层
有些浮点数的计算得到的结果是就没有那么多位的精度,也是进制之间转换的结果吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-5 11:53:05 | 显示全部楼层
顶一个楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-5 16:29:29 | 显示全部楼层
是的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-7 08:49:37 | 显示全部楼层
还不是很懂的感觉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-18 09:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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