Дробная часть числа на Python
Условие: Учитывая положительное вещественное число, выведите его дробную часть.
Решение:
a = float(input()) b = a * 10 c = b % 10 d = c / 10 e = round(d, 10) print (e)
Пояснение: В первую очередь мы берем вместо вещественного целое число (умножая на 10). После находим последнюю цифру и целочисленно делим её на 10. Дальше находим с помощью функции round() цифру после точки.
Вывести дробную часть положительного числа на Питоне
Дано положительное действительное число X. Выведите его дробную часть. Вот моё решение, но оно неправильное:
print((int(a*1000)-(floor(a))*1000)/1000)
Отслеживать
52.2k 11 11 золотых знаков 108 108 серебряных знаков 312 312 бронзовых знаков
задан 12 дек 2017 в 18:22
49 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
А что у вас получилось до сих пор?
12 дек 2017 в 18:28
print((int(a*1000)-(floor(a))*1000)/1000) получилось как-то так,но это решение неправильное
12 дек 2017 в 18:40
@helenmay ответ примите нажатием на галочку слева от него
10 мая 2018 в 9:28
6 ответов 6
Сортировка: Сброс на вариант по умолчанию
Остаток от деления на единицу, как это ни странно, даст нужный результат:
print (a%1)
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
ответ дан 13 дек 2017 в 7:39
Владимир Мартьянов Владимир Мартьянов
9,649 4 4 золотых знака 21 21 серебряный знак 35 35 бронзовых знаков
>>> (15 / 8) % 1 0.875 >>> 15 / 8 1.875 Всё простое— реально очень просто!
10 фев 2022 в 18:06
Чтобы разделить число на дробную и целые части, можно math.modf() использовать:
>>> import math >>> math.modf(1.5) (0.5, 1.0)
Отслеживать
ответ дан 13 дек 2017 в 8:13
52.2k 11 11 золотых знаков 108 108 серебряных знаков 312 312 бронзовых знаков
print(x — int(x)) — это более точный вариант, но print(a%1) также сработает
Отслеживать
6,343 5 5 золотых знаков 25 25 серебряных знаков 54 54 бронзовых знака
ответ дан 22 мар 2018 в 11:32
11 1 1 бронзовый знак
import math x = float(input()) y = x-math.floor(x) print(y)
И округлить по вкусу)))
Отслеживать
ответ дан 13 июн 2020 в 12:32
11 2 2 бронзовых знака
Из курса ВШЭ решал задание такое вот так:
from math import * x = float(input()) if x > 1: a = floor(x) b = x - a print(round(b, 2)) else: print(x)
Отслеживать
51.6k 200 200 золотых знаков 61 61 серебряный знак 242 242 бронзовых знака
ответ дан 1 июл 2020 в 20:11
41 3 3 бронзовых знака
def solution(n): decimal = divmod(n, 1) return round(list(decimal)[1], 10) print(solution(4.1))
Ответом будет 0.1| divmod(n,1) разделит число n на кортеж (4.0, 0.0999999998). Дальше я просто беру число под индексом [1] , это число 0.0999999998, и затем округляю его до десятых. В итоге получается 0.1
Отслеживать
ответ дан 5 дек 2021 в 17:11
23 4 4 бронзовых знака
В текущем виде ваш ответ непонятен. Пожалуйста, нажмите править под сообщением, чтобы добавить больше подробностей, которые помогут другим понять, как он отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы в Справке.
5 дек 2021 в 17:13
пожалуйста, постарайтесь оставлять чуть более развёрнутые ответы. дополнить ответ можно, нажав править
Математические операции в Python: как вывести дробную часть и работать с числами
Представление чисел в Python 3 не отличается от обычных математических чисел. И поддерживают такие числа самые обыкновенные операции: сложение, вычитание, умножение, деление, возведение в степень, получение дробной части и т. п.
Целые числа (int)
Ниже вы можете увидеть стандартные Python-операции, в которых используется целое число (int):
| a + b | Складываем |
| a — b | Вычитаем |
| a * b | Умножаем |
| a / b | Делим |
| a // b | Можем вывести целую часть от деления |
| a % b | Можем вывести остаток от деления |
| -a | Меняем знак числа |
| abs(x) | Можем вывести модуль числа x |
| divmod(a, b) | Пара (a // b, a % b) |
| a ** b | Операция для возведения в степень |
| pow(a, b[, x]) | ab по модулю (в случае, если модуль задан) |
Кроме того, числа int в Python 3 поддерживают длинную арифметику в отличие от некоторых других языков программирования. Однако для этого требуется больше памяти.
Битовые операции
Над числами int в Python можно выполнять и битовые операции. К примеру, a | b — это побитовое «или». Есть и другие варианты:
| a ^ b | Побитовое исключающее или |
| a & b | Побитовое и |
| a | Сдвиг влево |
| a >> b | Сдвиг вправо |
| ~a | Инверсия битов |
Дополнительные методы и операции в Python
В эти операции входят: • int.bit_length() — количество бит, которое необходимо, чтобы представить число в двоичном виде без учёта лидирующих нулей и знака; • int.to_bytes(length, byteorder, *, signed=False) — метод возвращает строку байтов, которые представляют это число; • classmethod int.from_bytes(bytes, byteorder, *, signed=False) — возвращение числа из заданной строки байтов.
Пример работы последнего метода:
>>> >>> int.from_bytes(b'\x00\x10', byteorder='big') 16 >>> int.from_bytes(b'\x00\x10', byteorder='little') 4096 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) -1024 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) 64512 >>> int.from_bytes([255, 0, 0], byteorder='big') 16711680Операции с системами счисления
Как гласит математика и информатика, числа можно представить как в десятичной, так и в двоичной системе счисления. Допустим, число 19 в двоичной системе имеет вид 10011. Также можно переводить числа из одной системы в другую. В Python для этого есть ряд функций: • int([object], [основание системы счисления]) — функция нужна для преобразования к целому числу. По умолчанию речь идёт о десятичной системе, однако можно задать любое основание в пределах чисел 2-36. • bin(x) — функция для преобразования целого числа в двоичную строку; • hex(х) — аналогично, но действительное целое число преобразуется в шестнадцатеричную строку; • oct(х) — для преобразования чисел в восьмеричную строку.
>>> >>> a = int('19') # Строка переводится в число >>> b = int('19.5') # Строка не является числом Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '19.5' >>> c = int(19.5) # Отсекает дробную часть, если применена к числу с плавающей точкой >>> print(a, c) 19 19 >>> bin(19) '0b10011' >>> oct(19) '0o23' >>> hex(19) '0x13' >>> 0b10011 # Вариант записи числовых констант 19 >>> int('10011', 2) 19 >>> int('0b10011', 2) 19Операции с вещественными числами (float)
Чтобы вывести дробную часть, в Python используют вещественные числа. Они поддерживают выполнение тех же операций, что и в случае с int. Но из-за особенностей их представления в компьютере, когда выводишь дробную часть, возможны неточности и даже ошибки:
>>> >>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 0.9999999999999999Для повышения точности операций используются такие объекты, как Decimal и Fraction.
Вспомогательные методы
К ним относят:
• float.as_integer_ratio() — это пара целых чисел int, отношение которых равно этому числу; • float.is_integer() — функция определят, является ли данное значение целым числом; • float.hex() — функция переводит float в 16-тиричную систему счисления, то есть в hex; • classmethod float.fromhex(s) — функцию используют для получения float из 16-тиричной строки.Кроме стандартных выражений, в Python есть и специальные полезные модули. Например, модуль math позволяет выполнять более сложные арифметические функции:
>>> >>> import math >>> math.pi 3.141592653589793 >>> math.sqrt(85) 9.219544457292887А вот модуль random запускает генератор случайных чисел, позволяя реализовать функции случайного выбора:
>>> >>> import random >>> random.random() 0.75849839767373282Комплексные числа в Python (complex)
Также в Python встроены комплексные числа:
>>> >>> x = complex(1, 2) >>> print(x) (1+2j) >>> y = complex(3, 4) >>> print(y) (3+4j) >>> z = x + y >>> print(x) (1+2j) >>> print(z) (4+6j) >>> z = x * y >>> print(z) (-5+10j) >>> z = x / y >>> print(z) (0.44+0.08j) >>> print(x.conjugate()) # Сопряжённое число (1-2j) >>> print(x.imag) # Мнимая часть 2.0 >>> print(x.real) # Действительная часть 1.0 >>> print(x > y) # Числа нельзя сравнить Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: complex() > complex() >>> print(x == y) # Однако можно проверить их на равенство False >>> abs(3 + 4j) # Модуль 5.0 >>> pow(3 + 4j, 2) # Возведение в степень, получение значения степени (-7+24j)Кроме того, для работы с complex может применяться модуль cmath.
На этом пока что всё. Следите за новостями и не забывайте оставлять свои комментарии!
Как получить дробную часть числа python
Здравствуйте!
Подскажите, пожалуйста, как получить дробную часть числа?
Например, 97.54, как мне получить 54?
Если можно, то без дополнительных функций.МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,199a = 97.54 f = a - int(a)import math a = 97.54 f, _ = math.modf(a)Пишите язык программирования - это форум программистов , а не экстрасенсов. (<= это подпись ) Высокая репутация СуперМодератор Регистрация: 27.07.2008 Сообщений: 16,155 Сообщение от BDA
f = a - int(a)
А разве мы не получим 0.54, а ТС хочет получить 54?
Форумчанин
Регистрация: 12.09.2008
Сообщений: 621
Сообщение от Arigato
. ТС хочет получить 54?
Да! Как это сделать?
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,199
Arigato, да, и правда, получим дробное. Женя32, например:int(str(97.54).split('.')[1])Но тут могут быть нюансы: сколько нужно знаков после запятой, как предполагается использовать число.
Пишите язык программирования - это форум программистов , а не экстрасенсов. (<= это подпись ) Высокая репутация СуперМодератор Регистрация: 27.07.2008 Сообщений: 16,155Можно в цикле умножать на 10, пока дробная часть не станет равна нулю или же не достигнем нужного числа знаков.
Форумчанин
Регистрация: 12.09.2008
Сообщений: 621
Сообщение от BDA
Arigato, да, и правда, получим дробное. Женя32, например:int(str(97.54).split('.')[1])Но тут могут быть нюансы: сколько нужно знаков после запятой, как предполагается использовать число.
Все, работает! Спасибо!
Форумчанин
Регистрация: 12.09.2008
Сообщений: 621Возник вопрос: почему split переворачивает цифры числа?
Например, было 10 выдает 01, было 30 выдает 03, было 50 выдает 05, и т.д.
Как это исправить?Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
Показывайте код. У меня не переворачивает.
Форумчанин
Регистрация: 12.09.2008
Сообщений: 621Я не правильно сказал. От десятков убирает 0, было 10 стало 1, было 30 стало 3 и т.д.
price = [22.10, 12.20, 22.30, 33.60]for i in range(len(price)):
if price[i] % 1 != 0:
st = str(price[i])
inp = st.split('.')[-1]
print(inp)price = [22.10, 12.20, 22.30, 33.60]for i in range(len(price)):
if price[i] % 1 != 0:
st = str(price[i])
inp = st.split('.')[-1]
print(inp)Последний раз редактировалось Женя32; 14.07.2021 в 18:28 .

