Возьмите число после плавающей запятой
У меня есть это значение:
a = 1.01010101
И мне нужно взять все числа после точки, преобразовать их в целое число. Создайте новую переменную и поместите это int в новую переменную. Поэтому мне нужен такой вывод
b = 01010101
Я не могу сделать это:
a -= 1
b = a*(10**8)
потому что я не знаю номер до момента. Возможно ли это сделать без написания новой функции? Извините за мой английский. Хорошего дня
2 ответа
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".