由于Python对整数没有限制,但对浮点数有一些限制。 我如何计算非常大的花车的地板?
我正在尝试计算楼层(A * B),其中A是一个小的无理数,可能是sqrt(2),e,sqrt(5)等,B是10 ^ 1000范围内的一个非常大的数字。 / p>
答案 0 :(得分:1)
您可以使用decimal模块:
@-webkit-keyframes rotating /* Safari and Chrome */ {
from {
-webkit-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes rotating {
from {
-ms-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-ms-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-webkit-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.rotating {
-webkit-animation: rotating 2s linear infinite;
-moz-animation: rotating 2s linear infinite;
-ms-animation: rotating 2s linear infinite;
-o-animation: rotating 2s linear infinite;
animation: rotating 2s linear infinite;
}
您还可以使用>>> from decimal import Decimal
>>> from math import floor, sqrt
>>>
>>> d1 = Decimal(sqrt(2))
>>> d2 = Decimal(10**1000)
>>>
>>> result = d1 * d2
>>> floor(result)
设置小数的精度,以获得更精确的结果。
getcontext().prec
答案 1 :(得分:0)
64位花车不超过~10 ^ 308。所以你的10 ^ 1000肯定不适合,无论乘以任何常数。 (没有64位浮点数可以小到10 ^ 1000小于10 ^ 308。)所以你的程序不适用于浮点数。
考虑使用decimal
模块。 E.g:
import decimal
import math
a = decimal.Decimal("10") ** 10000
b = decimal.Decimal("0.123")
math.floor(a*b)