在Python中如何找到最低有效数字

时间:2014-08-29 15:15:36

标签: python math significant-digits

我正在寻找一种有希望的简单方法来查找数字中最不重要的数字(浮点数或整数)。

例如:

  

101 - > 1

     

101.2 - > 0.2

     

1.1003 - > 0.0003

10,100,1000等案件的相关性稍差,不管我是否感兴趣。

我并不特别关心这种格式,所以如果以更实际的方式确定结果更有意义,请随意。

例如:

101.2 - > 0.1或10 ^ -1(相关功率/指数甚至为-1)也没问题。

对于其他背景,我想做的是:

假设我有一个数字31.6我希望能够将其转换为31.5(将最低有效数字减少1)。让我说我有16号,我想把它变成15(同样的想法)。如果我有数字100,我仍然想把它变成99,但我可以弄清楚那里的情况处理(没有指定100.0,我认为1是最低有效数字,减少1给你0,这不是我想要的是)。这反过来又与手动操作数据范围中的类中断有关(尽管不在主题中)。

显示我的作业: This looks promising(lessSigDigit部分),但它返回的数字没有任何(数学)引用数字的力量(我希望避免大量的字符串转换)。

这是我searched stackoverflow时出现的情况,但似乎没有帮助(如果我使用错误的术语/搜索短语,我提前道歉)

1 个答案:

答案 0 :(得分:7)

如果你已经有花车,这是行不通的。 Python浮动文件不包含您需要的信息。 1.1.0之间没有区别,如果您划分1.03.0,则会得到0.3333333333333333(除非它真的0.333333333333333314829616256247390992939472198486328125 )。

如果你的输入是字符串,你可以很容易地做到:

def least_significant_digit_power(num_string):
    if '.' in num_string:
        # There's a decimal point. Figure out how many digits are to the right
        # of the decimal point and negate that.
        return -len(num_string.partition('.')[2])
    else:
        # No decimal point. Count trailing zeros.
        return len(num_string) - len(num_string.rstrip('0'))