python数字浮点数_Python在float和数字浮点数64

我陷入了一个由浮点精度引起的测试失败中,并试图理解它。在

简而言之:Python3round根据类型是float还是数字浮点数64虽然我认为float==double==float64和Python3和NumPy应该是最接近偶数的。在

这里有一个例子:npVal = np.float64(435)/100

pyVal = 435/100

print(round(npVal,1)) // 4.4

print(round(pyVal,1)) // 4.3

print(round(np.float64(pyVal),1)) // 4.4

print(round(float(npVal),1)) // 4.3

我知道4.35和4.4可能不能完全用double表示,但是为什么numpyround与Python不同,尽管它们都使用相同的数据类型并指定了相似的函数?我使用显式除法来避免输入舍入错误。在

我不确定,4.35的双精度值是多还是少,所以我不能说这些实现中哪一个是(可能是?)错了。在

有人指出,NumPy“舍入到最接近的偶数值”和“python2和python3之间的行为发生了变化;python3在这里的行为与numy相同”。在

所以两者都应该做同样的事情,并四舍五入到最接近的偶数值。所以如果4.35是一个精确的浮点值,那么4.4将是正确的答案,并且需要两者都返回。在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值