我需要一个访问所有具有两个以上小数的数字的解决方案。例如
拥有:
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
结尾。
算法:
- 提取馏分
- 按4.0缩放
- 相对于0.0测试分数
如果非零,则原始值需要超过2位才能使用精确十进制表示。