相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

0.1 + 0.2 == 0.3  ->  false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2         ->  0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

53
推荐指数
3
解决办法
7万
查看次数

math.sqrt()和math.pow()中的不准确性来自大数字?

如果取一个数字,取其平方根,删除小数,然后将其提高到二次幂,结果应始终小于或等于原始数.

这似乎在python中都适用,直到你99999999999999975425出于某种原因尝试它.

import math

def check(n):
    assert math.pow(math.floor(math.sqrt(n)), 2) <= n

check(99999999999999975424)  # No exception.
check(99999999999999975425)  # Throws AssertionError.
Run Code Online (Sandbox Code Playgroud)

它看起来像math.pow(math.floor(math.sqrt(99999999999999975425)), 2)回报1e+20.

我认为这与我们在python中存储值的方式有关...与浮点运算相关的东西,但我不能具体说明这会如何影响这种情况.

python sqrt pow

11
推荐指数
2
解决办法
1076
查看次数

Python 3中数字大于10 ^ 2000的平方根

我想在Python中计算一个大于10 ^ 2000的数字的平方根.如果我将此数字视为普通整数,我将始终得到此结果:

Traceback (most recent call last):
  File "...", line 3, in <module>
    print( q*(0.5)  )
OverflowError: int too large to convert to float
Run Code Online (Sandbox Code Playgroud)

我该如何解决?或者除了使用Python之外是否存在计算此平方根的可能性?

python python-3.x

3
推荐指数
2
解决办法
1038
查看次数