在Python中,如何获得表示为int的浮点数的前N个十进制数字?
例如,如果我有:
12.43564
我希望能够得到43564作为int。或者,如果浮点数有很多小数位,那么只将前 N 位小数作为整数就可以了。
例如,如果 N 是3,12.43564那么我会得到435。
有没有办法做到这一点?
更新:我无法转换为字符串。原因是我在 Numba 编译函数中需要这个,并且由于这个开放问题,在这种情况下不可能将浮点数转换为字符串:https : //github.com/numba/numba/issues/4758
回答
将其类型转换为字符串,在句点上拆分,获得您想要的 N 位数字。
>>> x = 1.23456789
str(x)
>>> str(x)
'1.23456789'
>>> str(x).split('.')
['1', '23456789']
>>> str(x).split('.')[1][:4]
'2345'
根据编辑,
减去 int 部分。乘以 10000 得到前 4。
>>> (x - int(x)) * 10000
2345.678899999999
>>> int((x - int(x)) * 10000)
2345
- @EdyBourne 修改以说明编辑。
- 查看:https://numpy.org/doc/stable/reference/generated/numpy.modf.html