我有这个价值:
a = 1.01010101
我需要在该点之后取所有数字,将它们转换为 int。创建一个新变量并将这个 int 放入一个新变量中。所以我需要这样的输出
b = 01010101
我不能这样做:
a -= 1
b = a*(10**8)
因为我不知道点之前的数字。是否也可以在不编写新功能的情况下做到这一点?对不起我的英语不好。祝你有美好的一天
该math.trunc()函数将为您提供整数部分:
>>> import math
>>> math.trunc(1.01010101)
1
然后您可以减去,但是您可能会遇到令人惊讶的 ieee 浮点问题:
>>> a = 1.01010101
>>> a -= math.trunc(a)
>>> a
0.010101010000000077
>>> b = a * 10**8
>>> b
1010101.0000000077
在许多情况下,您可以截断最后一个数字以获得预期的整数,但我建议阅读https://docs.python.org/2/tutorial/floatingpoint.html以获得更深入的理解。
Python 有一个decimal模块可以更忠实地处理 base-10 算术:
import decimal.Decimal as D
>>> a = D('1.01010101')
>>> a
Decimal('1.01010101')
>>> math.trunc(a)
1
>>> a -= math.trunc(a)
>>> a
Decimal('0.01010101')
>>> a * 10**8
Decimal('1010101.00000000')
>>> b = int(a * 10**8)
>>> b
1010101
在这个版本中,行中不会有浮点伪影b = ...。
你可以这样做:
a = 1.01010101
b = str(a).split('.')[1]
这应该给你“01010101”。