Как получить числа после десятичной точки? - PullRequest
83 голосов
/ 08 октября 2010

Как мне получить числа после десятичной точки?

Например, если у меня есть 5.55, как мне получить .55?

Ответы [ 19 ]

152 голосов
/ 08 октября 2010
5.55 % 1

Имейте в виду, что это не поможет вам с проблемами округления с плавающей запятой.То есть, вы можете получить:

0.550000000001

Или иначе немного от ожидаемого 0,55.

123 голосов
/ 16 мая 2014

Использование modf :

>>> import math
>>> frac, whole = math.modf(2.5)
>>> frac
0.5
>>> whole
2.0
49 голосов
/ 08 октября 2010

А как же:

a = 1.3927278749291
b = a - int(a)

b
>> 0.39272787492910011

Или, используя numpy:

import numpy
a = 1.3927278749291
b = a - numpy.fix(a)
31 голосов
/ 08 октября 2010

Используя модуль decimal из стандартной библиотеки, вы можете сохранить исходную точность и избежать проблем с округлением с плавающей запятой:

>>> from decimal import Decimal
>>> Decimal('4.20') % 1
Decimal('0.20')

As kindall примечания в комментариях вам нужно сначала преобразовать нативные float s в строки.

21 голосов
/ 05 марта 2012

Простой подход для вас:

number_dec = str(number-int(number))[1:]
6 голосов
/ 08 октября 2010

Попробуйте по модулю:

5.55%1 = 0.54999999999999982
4 голосов
/ 08 октября 2010
import math
orig = 5.55
whole = math.floor(orig)    # whole = 5.0
frac = orig - whole         # frac = 0.55
3 голосов
/ 26 января 2018

аналогично принятому ответу, даже более простой подход с использованием строк будет

if "." in str(number): # quick check if it is decimal
    number_dec = str(number).split(".")[1]

if 'e-' in str(number): # scientific notation
    number_dec = format(float(number_dec), '.%df'%(len(number_dec.split(".")[1].split("e-")[0])+int(number_dec.split('e-')[1])))
2 голосов
/ 08 октября 2010
>>> n=5.55
>>> if "." in str(n):
...     print "."+str(n).split(".")[-1]
...
.55
1 голос
/ 24 февраля 2019
import math

x = 1245342664.6
print( (math.floor(x*1000)%1000) //100 )

Это определенно сработало

...