相关疑难解决方法(0)

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

检查float是否等于python中的整数值

在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.

python floating-point

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

为什么 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
查看次数

标签 统计

python ×3

math ×2

sqrt ×2

floating-point ×1