Вывести дробную часть положительного числа на Питоне
Дано положительное действительное число X. Выведите его дробную часть. Вот моё решение, но оно неправильное:
print((int(a*1000)-(floor(a))*1000)/1000)
Отслеживать
52.2k 11 11 золотых знаков 108 108 серебряных знаков 311 311 бронзовых знаков
задан 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.5k 17 17 золотых знаков 56 56 серебряных знаков 99 99 бронзовых знаков
ответ дан 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 серебряных знаков 311 311 бронзовых знаков
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 199 199 золотых знаков 59 59 серебряных знаков 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.
На этом пока что всё. Следите за новостями и не забывайте оставлять свои комментарии!
Неправильно расчитывается дробная часть
Нужно чтобы при вводе, скажем, 14.23 должно выводить 23. Или при вводе 54.3232 должно выводить 3232. НО! Запуская этот код и вводя 14.23 почему-то выводит чуть больше (23000000000000043). Иногда чуть больше, иногда чуть меньше. Что не так? Как исправить?
n = float(input('Число: ')) print(str(n % 1)[2:])94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:Часть кода работает неправильно
Доброго времени суток! Прошу помочь более опытных коллег! Выполняя ДЗ необходимо было написать.Дробная часть
x = float(input()) print(x - int(x)) Всем привет. Написать в одну строку используя.Дробная часть вещественных чисел
Здравствуйте! Помогите, пожалуйста, на Питоне Дан массив вещественных положительных чисел.
Целая и дробная часть деления числа
Нахождение результата деления числа 58 его целой части, его дробной части. Хз, училка сама условие.1040 / 575 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1triatri3, всё так, учите мат. часть
Добавлено через 3 минуты
triatri3,1 2 3 4from decimal import Decimal n = Decimal(input('Число: ')) print(str(n % 1)[2:])
36829 / 19877 / 4166
Регистрация: 12.02.2012
Сообщений: 33,013
Записей в блоге: 13
Сообщение от m0nte-cr1st0
всё так, учите мат. часть
- и русский язык поучить тоже не помешает:
"Запуская этот код и вводя 14.23 почему-то выводит. "
"Подъезжая к сей станции с моей головы слетела шляпа" (А.П. Чехов)
1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6triatri3, Вопервых, оператор деления по модулю % работает только для деления целых чисел или чисел Decimal, поэтому у Вас выводится не остаток а всякая хрень. Поэтому:
1) или нужно преобразовать числа в целые, например умножив числитель и знаменатель на 10000 в Вашем случае или предварительно определив количество цифр в веденной строке, и умножив на число с количеством нулей равным количеству цифр.
2) Или использовать формат не float , а Decimal, как у m0nte-cr1st0,
Кстати я тоже не знал, что оператор % деления по модулю, работает не только с целыми, но и с числами в формате Decimal. Теперь буду знать, занес в свою базу данных.1040 / 575 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
Сообщение от Viktorrus
Кстати я тоже не знал, что оператор % деления по модулю, работает не только с целыми, но и с числами в формате Decimal.
более того, этот оператор работает и с другими типами чисел, например
1 2 3 4from fractions import Fraction print(Fraction(3/3)%1) #01727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6Относительно варианта m0nte-cr1st0, нужно иметь ввиду. Что если вводится число с нулями на конце, то выведется дробная часть вместе с нулями. Например если ввести 54.323200, то выведется 323200. Если нули не нужны, то требуется как то их убрать.
Добавлено через 1 минуту
m0nte-cr1st0, спасибо за информацию.Добавлено через 42 минуты
Если к тому же нужно убрать нули в конце числа, если их ввели, то можно подкорректировать вариант m0nte-cr1st0, следующим образом1 2 3 4 5from decimal import Decimal m = float(input('Число: ')) n = Decimal(str(m)) print(str(n % 1)[2:])87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесьЧасть программы неправильно отображает результат
Есть задача: В диапазоне элементов массива с k1-го по k2-ой, где k1 и k2 вводятся с клавиатуры. .
Отбросить дробную часть числа, если дробная часть равна нулю
Всем доброго времени суток, каким образом можно устроить проверку равна ли дробная часть числа.
Определить, превышает ли умноженная на 10 дробная часть числа его целую часть
Определить превышает ли умноженная на 10 дробная часть числа m/n целую часть m/n . Если.Разделить дробное число на 2 части: целая часть числа и его дробная часть
Пользователь вводит с клавиатуры сумму в валюте (дробное число). Вывести по отдельности количество.Выяснить что больше, целая часть числа x, или его дробная часть, умноженная на 10
1)Ввести число x, выяснить что больше: целая часть числа x, или его дробная часть, умноженная на.
Ввести число х, выяснить что большеЖ целая часть х, или его Дробная часть, уу
Ввести число х, выяснить что больше: целая часть х, или его Дробная часть, умноженная на 10. Если.Дробная часть вещественных чисел
Дан массив вещественных положительных чисел. Записать в массив B дробные части тех чисел, целая часть которых по модулю лежит в диапазоне [3,7].
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:Дробная часть
x = float(input()) print(x - int(x)) Всем привет. Написать в одну строку используя.
Целая и дробная часть деления числа
Нахождение результата деления числа 58 его целой части, его дробной части. Хз, училка сама условие.Неправильно расчитывается дробная часть
Нужно чтобы при вводе, скажем, 14.23 должно выводить 23. Или при вводе 54.3232 должно выводить.Найти количество элементов массива вещественных чисел, дробная часть которых равна 0,5
Найти количество элементов массива вещественных чисел, дробная часть которых равна 0,5
7651 / 4098 / 1791
Регистрация: 27.03.2020
Сообщений: 6,913if 3 int(abs(a[i])) 7: b.append(abs(a[i]) - int(abs(a[i])))Регистрация: 26.11.2020
Сообщений: 411 2 3 4 5 6 7 8 9 10 11 12A=[] n=input("Введите количество элементов массива: ") n=int(n) for i in range(0,n): s='A['+str(i)+']: ' k=input(s) k=float(k) A.append(k) print('Исходный массив ', A) B=[] if 3 int(abs(A[i])) 7: B.append(abs(A[i]) - int(abs(A[i])))Полное решение вот такое, но программа ничего не выводит, в чем ошибка ?
Регистрация: 26.11.2020
Сообщений: 41
5161 / 2636 / 545
Регистрация: 07.11.2019
Сообщений: 4,351
Так сделайте вывод print'ом, как с исходным массивом.
Регистрация: 26.11.2020
Сообщений: 41
Регистрация: 26.11.2020
Сообщений: 41
все равно не выводятся дробные части
5161 / 2636 / 545
Регистрация: 07.11.2019
Сообщений: 4,351
Подсказка: Чему равно i, вне цикла?
7651 / 4098 / 1791
Регистрация: 27.03.2020
Сообщений: 6,913
Qqfzl, сравни "исправленные" строчки и свои "закомментированные"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19a=[] n=int(input("Введите количество элементов массива: ")) #n=int(n) #for i in range(0,n): for i in range(n): #s='A['+str(i)+']: ' #k=input(s) #k=float(k) #A.append(k) k = float(input()) a.append(k) #print('Исходный массив ', A) print('Исходный массив ', '\n', *a) #B=[] b=[] if 3 int(abs(A[i])) 7: #B.append(abs(A[i]) - int(abs(A[i]))) b.append(abs(a[i]) - int(abs(a[i]))) print('Итоговый массив ', '\n', *b)87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесьПри сортировке теряется дробная часть чисел
Помогите пожалуйста! Для введенного с клавиатуры целого числа n создать массив из n действительных.
Определить сумму всех чисел в файле, дробная часть которых более 0.3
Файл содержит вещественные числа. Определить сумму всех чисел в файле, дробная часть которых более.Выполнить деление чисел с фиксированной запятой методом без восстановления остатка (дробная часть)
Помогите пожалуйста решить задание. Нужно выполнить деление чисел с фиксированной запятой методом.
Отбросить дробную часть числа, если дробная часть равна нулю
Всем доброго времени суток, каким образом можно устроить проверку равна ли дробная часть числа.
Определить, превышает ли умноженная на 10 дробная часть числа его целую часть
Определить превышает ли умноженная на 10 дробная часть числа m/n целую часть m/n . Если.Разделить дробное число на 2 части: целая часть числа и его дробная часть
Пользователь вводит с клавиатуры сумму в валюте (дробное число). Вывести по отдельности количество.


