-1

我有这个价值:

a = 1.01010101 

我需要在该点之后取所有数字,将它们转换为 int。创建一个新变量并将这个 int 放入一个新变量中。所以我需要这样的输出

b = 01010101

我不能这样做:

a -= 1
b = a*(10**8)

因为我不知道点之前的数字。是否也可以在不编写新功能的情况下做到这一点?对不起我的英语不好。祝你有美好的一天

4

2 回答 2

1

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 = ...

于 2018-12-20T20:35:25.683 回答
0

你可以这样做:

a = 1.01010101
b = str(a).split('.')[1]

这应该给你“01010101”。

于 2018-12-20T20:26:43.503 回答