gpt4 book ai didi

python - 如何在乘以 10 的幂后找出最接近小数的整数

转载 作者:行者123 更新时间:2023-11-28 22:11:44 27 4
gpt4 key购买 nike

我有一个 float 7.999999985666533最接近 8,我使用 math.isclose 来使用它

math.isclose(a, b)

但对于像 1.5999999991220535 这样的浮点值最近的整数是 2 但如果我将它乘以 10 (10 ** 1) ,我得到 16 作为最接近的整数,这也是 isclose 的结果

另一个例子:

1.2799999997163347乘以 100 (10 ** 2) 后应为 128

有什么办法可以做到这一点吗?

最佳答案

连分数非常强大。也许这有点矫枉过正,但它确实有效。

import numpy as np

def get_cont_fraction(x, depth=0, maxdepth=10, precision=1e-6):
if depth > maxdepth:
out = []
else:
assert x >= 0
out=[]
if not depth:
out += [ int(x) ] + get_cont_fraction( x - int( x ), depth=depth + 1, maxdepth=maxdepth, precision=precision)
elif x < precision :
out=[]
else:
out += [ int(1./ x) ] + get_cont_fraction(1. / x - int( 1. / x ), depth=depth + 1, maxdepth=maxdepth, precision=precision)
return out

def get_fraction(inList):
num = inList[-1]
den = 1
testList = inList[:-1:]
testList = testList[::-1]
for a in testList:
num , den = a * num + den, num
return ( num, den )

if __name__ == "__main__":
a = get_fraction( get_cont_fraction( 1.5999999991220535 ) )
print a
print a[0]*1./a[1]
a = get_fraction( get_cont_fraction( 1.2799999997163347 ) )
print a
print a[0]*1./a[1]

给予:

>> (8, 5)
>> 1.6
>> (32, 25)
>> 1.28

关于python - 如何在乘以 10 的幂后找出最接近小数的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55489414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com