如何查找包含两个以上小数的浮点数?(Python)



我需要一个访问所有具有两个以上小数的数字的解决方案。例如

拥有:

nums = [0.95, 0.7, 0.0, 0.3234, 0.54563]

需要:

many_decimals = [0.3234, 0.54563]

非常感谢:(

您可以转换为字符串,反转字符串,然后获取''的索引。'在作为小数位数的字符串中。

试试这样的东西:

nums = [0.95, 0.7, 0.0, 0.3234, 0.54563]
print([f for f in nums if str(f)[::-1].find('.') > 2])

输出:

[0.3234, 0.54563]

解决方案分解:

s = str(0.54563)[::-1] # => '36545.0'
s.find('.')            # => 5

如果数字是一个整数(例如100(,则s.find('.'(返回-1,因此这仍然适用于检查小数点后2位以上的情况。

相关问题中发布的备选方案使用十进制数据包和指数属性。使用这种方法可以创建与上面相同的输出。

import decimal
print([f for f in nums if abs(decimal.Decimal(str(f)).as_tuple().exponent) > 2])

精确浮点数值的小数必须以:0.0, 0.25, 0.5, 0.75结尾。

算法:

  1. 提取馏分
  2. 按4.0缩放
  3. 相对于0.0测试分数

如果非零,则原始值需要超过2位才能使用精确十进制表示。

最新更新