【发布时间】:2017-01-15 23:09:45
【问题描述】:
我正在划分非常大的整数,可以说是 1kb 整数,我已经遇到了 2 个问题。要么
溢出错误:整数除法结果对于浮点数来说太大
或者浮点数被四舍五入到一些数字,当我尝试乘回来时,我得到一个稍微不同的数字。
在 python 中有什么方法可以防止分割小数点后超过 20 位的浮点数?
smallest_floats = []
n1 = int(input())
n2 = int(input())
while n2 != 1:
smallest_floats.append(str(n1/n2))
n2 -= 1
print(min(smallest_floats, key=len))
我认为可能的解决方案是以某种方式断言分裂或:
len(s.split(".")[-1]) > 20
【问题讨论】:
-
您是否尝试过使用
decimal包?或者如果你想要整数除法,如果你使用//而不是/会发生什么? -
python 中的浮点数是通常的 64 位双精度浮点数。对于您想要做的事情,您需要导入一个多精度包。 Scipy 或 Sympy 可能有类似的东西。
-
我需要复制数字,所以我需要浮点数。
-
查看fractions 包,了解有理数的算术运算。
-
或者您可以使用
Fraction来避免丢失任何精度...
标签: python python-3.x math division integer-division