我需要计算一些数字的平方根,例如\xe2\x88\x9a9 = 3和\xe2\x88\x9a2 = 1.4142。我怎样才能用Python做到这一点?
输入可能都是正整数,并且相对较小(比如小于十亿),但万一它们不是,有什么可能会破坏吗?
\n注意:这是在 Meta 上讨论现有同标题问题后对规范问题的尝试。
\n有关的
\n在Python 3中,我正在检查给定值是否为三角形,也就是说,对于某些正整数n,它可以表示为n(n + 1)/ 2
我可以写一下:
import math
def is_triangular1(x):
num=(1/2) * (math.sqrt(8*x+1)-1 )
return int(num)==num
Run Code Online (Sandbox Code Playgroud)
或者我需要这样做吗?:
epsilon = 0.000000000001
def is_triangular2(x):
num=(1/2) * (math.sqrt(8*x+1)-1 )
return abs(int(num) - num)<epsilon
Run Code Online (Sandbox Code Playgroud)
我检查了两个函数返回x的相同结果,最多为1,000,000.但我不确定一般来说int(x)== x将始终正确地确定一个数是否是整数,因为例如5的情况表示为4.99999999999997等.
据我所知,第二种方法是正确的,如果我用C语言,但我不确定Python 3.
为什么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)
这里的结果是不正确的。
为什么会这样?