Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Удобный для вас подход:

number_dec = str(number-int(number))[1:]

Ответ 2

5.55 % 1

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

0.550000000001

Или иначе немного от 0.55, который вы ожидаете.

Ответ 3

Используйте modf:

>>> import math
>>> frac, whole = math.modf(2.5)
>>> frac
0.5
>>> whole
2.0

Ответ 4

Как насчет:

a = 1.3927278749291
b = a - int(a)

b
>> 0.39272787492910011

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

import numpy
a = 1.3927278749291
b = a - numpy.fix(a)

Ответ 5

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

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

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

Ответ 6

Попробуйте Modulo:

5.55%1 = 0.54999999999999982

Ответ 7

import math
orig = 5.55
whole = math.floor(orig)    # whole = 5.0
frac = orig - whole         # frac = 0.55

Ответ 8

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

def number_after_decimal(number1):
    number = str(number1)
    if 'e-' in number: # scientific notation
        number_dec = format(float(number), '.%df'%(len(number.split(".")[1].split("e-")[0])+int(number.split('e-')[1])))
    elif "." in number: # quick check if it is decimal
        number_dec = number.split(".")[1]
    return number_dec

Ответ 9

>>> n=5.55
>>> if "." in str(n):
...     print "."+str(n).split(".")[-1]
...
.55

Ответ 10

Используйте пол и вычтите результат из исходного номера:

>> import math #gives you floor.
>> t = 5.55 #Give a variable 5.55
>> x = math.floor(t) #floor returns t rounded down to 5..
>> z = t - x #z = 5.55 - 5 = 0.55

Ответ 11

Это решение, которое я пробовал:

num = 45.7234
(whole, frac) = (int(num), int(str(num)[(len(str(int(num)))+1):]))

Ответ 12

Пример:

import math
x = 5.55
print((math.floor(x*100)%100))

Это даст вам два числа после десятичной точки, 55 из этого примера. Если вам нужно одно число, вы уменьшаете на 10 вышеприведенные вычисления или увеличиваете в зависимости от того, сколько чисел вы хотите после десятичной.

Ответ 13

Числа с плавающей запятой не сохраняются в десятичном (base10) формате. Прочитайте документацию по Python, чтобы понять, почему. Поэтому получать представление base10 из числа с плавающей точкой не рекомендуется.

Теперь есть инструменты, которые позволяют хранить числовые данные в десятичном формате. Ниже приведен пример использования библиотеки Decimal.

from decimal import *

x = Decimal('0.341343214124443151466')
str(x)[-2:] == '66'  # True

y = 0.341343214124443151466
str(y)[-2:] == '66'  # False

Ответ 14

Иногда конечные нули имеют значение

In [4]: def split_float(x):
   ...:     '''split float into parts before and after the decimal'''
   ...:     before, after = str(x).split('.')
   ...:     return int(before), (int(after)*10 if len(after)==1 else int(after))
   ...: 
   ...: 

In [5]: split_float(105.10)
Out[5]: (105, 10)

In [6]: split_float(105.01)
Out[6]: (105, 1)

In [7]: split_float(105.12)
Out[7]: (105, 12)

Ответ 15

import math

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

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

Ответ 16

Как насчет:

a = 1.234
b = a - int(a)
length = len(str(a))

round(b, length-2)

Вывод:
print(b)
0.23399999999999999
round(b, length-2)
0.234

Так как раунд отправляется на длину строки десятичных знаков ('0.234'), мы можем просто минус 2, чтобы не считать "0", и вычислить нужное количество десятичных точек. Это должно работать в большинстве случаев, если у вас много десятичных знаков и ошибка округления при вычислении b мешает второму параметру round.

Ответ 17

Вы можете попробовать это:

your_num = 5.55
n = len(str(int(your_num)))
float('0' + str(your_num)[n:])

Он вернется 0.55.

Ответ 18

number=5.55
decimal=(number-int(number))
decimal_1=round(decimal,2)
print(decimal)
print(decimal_1)

вывод: 0,55

Ответ 19

Посмотрите, что я часто делаю, чтобы получить числа после десятичной точки в Python  3:

a=1.22
dec=str(a).split('.')
dec= int(dec[1])

Ответ 20

Еще одно безумное решение (без преобразования в строку):

number = 123.456
temp = 1

while (number*temp)%10 != 0:
    temp = temp *10
    print temp
    print number

temp = temp /10
number = number*temp
number_final = number%temp
print number_final