python - Python 3 浮动问题?
问题描述
我试图在 python 3 中进行以下计算:
https://i.stack.imgur.com/f5y7z.png
添加:
https://i.stack.imgur.com/Txoya.png
应该返回 0(图像是用 wolframalpha 制作的)。
当我尝试在 python 中进行相同的计算时:
pow((2*3*5),28)-29*math.floor(pow((2*3*5),28)/29)-1
它返回4303955653455607115022335
。
每个部分的值是:
228767924549610000000000000000000000000000
正确的。
-228767924549609995696044346544392884977665
不正确。
我怎样才能解决这个问题?
解决方案
您正在使用精度有限的浮点除法/
,因此您的大结果会四舍五入。
相反,您可以使用整数 floor division 获得您想要//
的结果,它具有无限精度的整数结果:
import math
pow((2*3*5),28)-29*(pow((2*3*5),28)//29)-1
# 0
推荐阅读
- amazon-web-services - 从 aws-cli 向 AWS EMR 集群提交 Spark 作业
- c++11 - 如何使用 std::result_of 返回函数类型而不是 void
- pyside - PySide gui、Maya hypershade 更新
- gradle - gradle 从 init 脚本覆盖插件存储库
- google-chrome - 重置 chrome 媒体参与度分数
- c# - 使用 LinkText 一次搜索 2 件事
- c# - C# Regex "Verbose" 就像在 Python 中一样
- azure-cosmosdb - 图形库无法解析具有现有文档库集合的简单数组属性
- c# - 使用 c# 与 microsoft exchange 服务建立连接
- java - Mockito:在使用@InjectMocks 时模拟被测试方法调用的同一类的方法