非常大的浮游物在python的地板

时间:2017-06-06 10:39:35

标签: python python-3.x math floor

由于Python对整数没有限制,但对浮点数有一些限制。 我如何计算非常大的花车的地板?

我正在尝试计算楼层(A * B),其中A是一个小的无理数,可能是sqrt(2),e,sqrt(5)等,B是10 ^ 1000范围内的一个非常大的数字。 / p>

2 个答案:

答案 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)