鱼C论坛

 找回密码
 立即注册
查看: 2312|回复: 3

[已解决]刚学两天,纯小白求助!

[复制链接]
发表于 2020-8-22 16:29:33 | 显示全部楼层 |阅读模式

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

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

x
下面这个我输入0.3怎么是no啊,哪里出了问题啊
x=input('shuzi:')
y=float(x)
import decimal
a=decimal.Decimal('0.1')
b=decimal.Decimal('0.2')
if y >= (a+b):
    print('yes')
else:
    print('no')
最佳答案
2020-8-22 16:43:06
本帖最后由 sunrise085 于 2020-8-22 16:59 编辑

这是存储精度问题,你可以试一下:0.1+0.2,得到的结果不是0.3,而是0.30000000000000004
  1. 0.3>=0.1+0.2
复制代码

这个得到的是False

  1. import decimal
  2. x=input('shuzi:')
  3. y=float(x)

  4. a=decimal.Decimal('0.1')
  5. b=decimal.Decimal('0.2')
  6. if y >=float(a+b):#这样写,才是正确的
  7.     print('yes')
  8. else:
  9.     print('no')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-22 16:43:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-8-22 16:59 编辑

这是存储精度问题,你可以试一下:0.1+0.2,得到的结果不是0.3,而是0.30000000000000004
  1. 0.3>=0.1+0.2
复制代码

这个得到的是False

  1. import decimal
  2. x=input('shuzi:')
  3. y=float(x)

  4. a=decimal.Decimal('0.1')
  5. b=decimal.Decimal('0.2')
  6. if y >=float(a+b):#这样写,才是正确的
  7.     print('yes')
  8. else:
  9.     print('no')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-22 16:47:20 | 显示全部楼层


你可以试着运行下面代码:
  1. x=input('shuzi:')
  2. y=float(x)
  3. import decimal
  4. a=decimal.Decimal('0.1')
  5. b=decimal.Decimal('0.2')
  6. print(y,a+b)
  7. print(type(y),type(a+b))
  8. print(y == a+b)
  9. if y >= (a+b):
  10.     print('yes')
  11. else:
  12.     print('no')
复制代码

输出结果:
  1. shuzi:0.3
  2. 0.3 0.3
  3. False
  4. <class 'float'> <class 'decimal.Decimal'>
  5. no
复制代码


他们虽然都是 0.3 ,但是实际上是不同的类,一个是 float ,一个是 Decimal

两类的精确度不同,导致 float 的 0.3 不和 Decimal 的 0.3 的不相等的,也就是上面代码的 print(y == a+b) 打印结果是 False

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

使用道具 举报

发表于 2020-8-22 16:54:49 | 显示全部楼层
本帖最后由 聂嘉辉 于 2020-8-22 16:58 编辑
  1. import decimal
  2. x = float(input('数字:'))

  3. a = decimal.Decimal('0.1')
  4. b = decimal.Decimal('0.2')
  5. if x >= float(a+b):
  6.     print('yes')
  7. else:
  8.     print('no')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 19:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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