@dmitrylogvinov

Как отделить рубли от копеек в вещественных числах?

Условие задачи:
Цена товара обозначена в рублях с точностью до копеек, то есть действительным числом с двумя цифрами после десятичной точки. Запишите в две целочисленные переменные стоимость товара в виде целого числа рублей и целого числа копеек и выведите их на экран. При решении этой задачи нельзя пользоваться условными инструкциями и циклами.

Примеры:
Тест 1
Входные данные: 10.35
Вывод программы: 10 35
Тест 2
Входные данные: 1.99
Вывод программы: 1 99
Тест 3
Входные данные: 3.50
Вывод программы: 3 50

Мой код:
import math
x = float(input())
b = x * 100
a = math.floor(b // 100)
m = math.floor(b % 100)
print(a, m)


Думаю, ошибка на вводе чисел: 40.80, 40.30 и т.д. Не знаю, как исправить((
  • Вопрос задан
  • 15349 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
Ввиду ошибок округления не следует использовать float для денежных вычислений:
x = float('40.80')
a = int(x)
b = int(100 * (x - a))
print(a, b)  # => 40 79

Используйте decimal.Decimal вместо float:
from decimal import Decimal

x = Decimal('40.80')
a = int(x)
b = int(100 * (x - a))
print(a, b)  # => 40 80

Ну или банально:
a, b = map(int, '40.80'.split('.'))
print(a, b)  # => 40 80

В реальных задачах следует предусмотреть, что:
1) Число может быть отрицательным;
2) Decimal separator в текущей локали может быть не точкой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
alishkz01
@alishkz01
Я начинающий программист .
Задача правильно на 83 % , а ошибка в чем? Помогите пожалуйста)
import math
n = float(input())
n1 = (n * 100) // 100
n2 = (n * 100) % 100
print(math.floor(n1), math.floor(n2), end='')
Ответ написан
Комментировать
@MichScott
мой вариант

a = float(input())
rub = int(a)
cen = (a - rub) * 100
print(rub, round(cen))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы