快速从浮点数中获取一个数字

时间:2014-02-20 13:01:47

标签: python floating-point

假设我可以将浮点数视为某种类型的dict,其中键的范围从-infinity到无穷大,值是这些位置的数字。也就是说,f [i]将返回最接近(f % 10**(i+1) - f % 10**i) / 10**i的整数。

例如,如果f=1234.5678f[-1] == 5f[2] == 2

此外:想象浮点数也会支持一些奇怪的图像切片形式(即使它不是一个列表,就像它不是一个字典),所以在我们的示例中f[-1:2] == 345

出于实际原因我需要这个,我需要快速完成。我想我可以写一些笨拙的东西,基于我在第一段写的表达式(它返回一个浮点数,浮点数的所有问题,我应该小心地转换为整数)。

所以我想知道是否有一些更简单,或者至少更优雅,快速的解决方案(性能是一个问题),它不涉及decimal等库

值得一提的是,我没有采用模拟__getitem__或切片表示法的解决方案。函数def getslice(f, a, b)非常好。

1 个答案:

答案 0 :(得分:2)

您可以将其更改为字符串。

mystr = str(num)

然后通过'。'的位置在mystr

mystr[pos+index] 

是你需要的,其中index是你在浮点之前和之后定义位置的方式。