给定x,计算x * 10 ^ k为整数的最小k

时间:2017-10-02 13:14:03

标签: python floating-point

我有一个小的(Python)命令行工具,用户提供了一个浮点数,例如,

foobar 3.141

我想计算数字的粒度,即找到k为整数的最小x * 10^k(达到给定的容差)。请注意,该数字可能以不同的方式表示(3141.0e-3等),因此计算.之后的字符数不一定会削减它。

def get_granularity(x):
    for k in range(100):
        if abs(x - int(x)) < 1.0e-15 * x:
            break
    x *= 10
    return k

有效,但我不太喜欢它,因为它假设最大k(在这种情况下为99)。可以邀请log10参加聚会,但也许有更优雅的解决方案。

0 个答案:

没有答案