相关疑难解决方法(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万
查看次数

为什么 math.sqrt() 对于大数不正确?

为什么math模块返回错误的结果?

第一次测试

A = 12345678917
print 'A =',A
B = sqrt(A**2)
print 'B =',int(B)
Run Code Online (Sandbox Code Playgroud)

结果

A = 12345678917
B = 12345678917
Run Code Online (Sandbox Code Playgroud)

到这里,结果是正确的。

第二次测试

A = 123456758365483459347856
print 'A =',A
B = sqrt(A**2)
print 'B =',int(B)
Run Code Online (Sandbox Code Playgroud)

结果

A = 123456758365483459347856
B = 123456758365483467538432
Run Code Online (Sandbox Code Playgroud)

这里的结果是不正确的。

为什么会这样?

python math sqrt

4
推荐指数
2
解决办法
3878
查看次数