在 Python 中,如何获得表示为 int 的浮点数的前 N ​​个十进制数字?

Edy*_*rne 2 python numba

例如,如果我有:

12.43564
Run Code Online (Sandbox Code Playgroud)

我希望能够得到43564作为int。或者,如果浮点数有很多小数位,那么只将前 N 位小数作为整数就可以了。

例如,如果 N 是312.43564那么我会得到435

有没有办法做到这一点?

更新:我无法转换为字符串。原因是我在 Numba 编译函数中需要这个,并且由于这个开放问题,在这种情况下不可能将浮点数转换为字符串:https : //github.com/numba/numba/issues/4758

rov*_*138 8

将其类型转换为字符串,在句点上拆分,获得您想要的 N 位数字。

>>> x = 1.23456789
str(x)
>>> str(x)
'1.23456789'
>>> str(x).split('.')
['1', '23456789']
>>> str(x).split('.')[1][:4]
'2345'
Run Code Online (Sandbox Code Playgroud)

根据编辑,

减去 int 部分。乘以 10000 得到前 4。

>>> (x - int(x)) * 10000
2345.678899999999
>>> int((x - int(x)) * 10000)
2345
Run Code Online (Sandbox Code Playgroud)

  • @EdyBourne 修改以说明编辑。 (2认同)
  • 查看:https://numpy.org/doc/stable/reference/generated/numpy.modf.html (2认同)