浮点后取数字

时间:2018-12-20 20:24:07

标签: python ieee-754 bin

我有这个值:

a = 1.01010101 

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

b = 01010101

我做不到:

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

因为我不知道要点之前的电话号码。 是否可以在不编写新函数的情况下做到这一点? 对不起我的英语不好。 祝你有美好的一天

2 个答案:

答案 0 :(得分: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模块,可以更忠实地处理以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 = ...行中没有浮点伪像。

答案 1 :(得分:0)

您可以这样做:

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

这应该给您“ 01010101”。

相关问题