吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1480|回复: 16
收起左侧

[求助] python知识点求补充

[复制链接]
Antion 发表于 2019-10-17 10:20
[Python] 纯文本查看 复制代码
num1 = 0.1
num2 = 0.2
num3 = 0.3
num4 = num1 + num2
if num3 == num4:
    print("y")
else:
    print("n")

结果是n
0.1和0.2 相加  不等于    0.3
0.1+0.2=0.30000000000004

python 的加法算法的差误是怎么回事
这个知识点不太清楚 求大神解答
看视频只知道算数有误差 但是不知道原因 和应对方法 取整和取小数点位数知道  但是想闹明白为什么有误差

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

15774211127 发表于 2019-10-17 10:22
本帖最后由 15774211127 于 2019-10-17 10:23 编辑

数据精度、存储标准、等一系列问题产生等原因
建议看下这篇文章 Float类型出现舍入误差的原因 https://blog.csdn.net/yingmuliuchuan/article/details/81043549 或者 浮点数float累加误差分析与解决 https://blog.csdn.net/zhrh0096/article/details/38589067

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
airabout + 1 + 1 谢谢@Thanks!

查看全部评分

dazhuangzhuang 发表于 2019-10-17 10:39
本帖最后由 dazhuangzhuang 于 2019-10-17 10:40 编辑

用decimal
可以控制精度
或者 用 a+b-c <= 0.001 也能实现正确判断,看你实际需求吧!
Rzzsss 发表于 2019-10-17 10:43
 楼主| Antion 发表于 2019-10-17 10:53
15774211127 发表于 2019-10-17 10:22
数据精度、存储标准、等一系列问题产生等原因
建议看下这篇文章 Float类型出现舍入误差的原因 https://blo ...

是不是输出结果前 都需要加上取整的函数  文章太长 看不进去 ····
 楼主| Antion 发表于 2019-10-17 10:54
dazhuangzhuang 发表于 2019-10-17 10:39
用decimal
可以控制精度
或者 用 a+b-c

python语言有这个 函数吗
825578598 发表于 2019-10-17 10:54
1+1都不等于2呀,为什么数学上是等于2?是为了更好的计算,但是编程语言需要精确,比如金融行业的,你必须非常精确,不然钱算起来就比对了,另外有个大部分写编程的人都会犯的一个错,就是金额保留两位小数的时候,直接用四舍五入的函数,那就麻烦了,钱就会变多,钱是不能四舍五入的
 楼主| Antion 发表于 2019-10-17 10:59
825578598 发表于 2019-10-17 10:54
1+1都不等于2呀,为什么数学上是等于2?是为了更好的计算,但是编程语言需要精确,比如金融行业的,你必须 ...

好颠覆认知啊,1+1 不等于二·········   我的认知里面就是一个苹果加一个苹果 等于俩苹果,为什么1+1不等于2啊
meforeg 发表于 2019-10-17 11:02
825578598 发表于 2019-10-17 10:54
1+1都不等于2呀,为什么数学上是等于2?是为了更好的计算,但是编程语言需要精确,比如金融行业的,你必须 ...

是二进制的问题
pj-Yang 发表于 2019-10-17 11:02
1+1是等于2,浮点数0.1+0.1不等于0.2是因为0.1无法用二进制来精确表达,以下是百度搜索的结果:
2进制表示小数的时候只能够表示能够用1/(2^n)的和的任意组合
例如:
0.5能够表示,因为它可以表示成为1/2
0.75也能够表示,因为它可以表示成为1/2+1/(2^2)
0.875也能够表示,因为它可以表示成为1/2+1/(2^2)+1/(2^3)
但是0.1不能够精确表示,因为它补能够表示成为1/(2^n)的和的形式
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 10:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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