Языки программирования

Целые и дробные числа в Python

Темой нашего предыдущего урока были задачи из жизни, требующие применять числа в Python. Если Вам было все понятно, то новая тема не вызовет затруднений. Если же возникли какие-либо вопросы, Вы всегда можете написать в комментарии и мы их разберем. И так, сегодня мы поговорим о целочисленных и вещественных значениях, а также о различиях между ними.

Для начала вернемся к школьной программе и вспомним, что такое целое число. Это такие значения, как 34, 7986, 57. В отличие от них, вещественные числа имеют остатки, дробные числа: 234.45 или 74.78. Мы привыкли всегда перед остатком ставить запятую, отделяя его от целой части числа, однако в Python числа разделяются немного по-другому, как и практически все языки программирования понимают дробные числа — через точку. Именно по этой причине их называют с плавающей точкой. Целый числа обозначаются как INT, а с плавающей точкой – FLOAT.

Для лучшего понимания приведем небольшой пример: print(7 * 4.9), здесь мы произвели умножения целого (int) числа 7 на (float) с плавающей точкой 4.9 и результате получили значение 34.300000000000004. Почему же получилось именно так? Изнанка: когда питон получает от пользователя подобную команду, то разбирает ее в следующем виде: print(7.0 * 4.9) этим перекодировал заданное нами int во float и перемножил как числа с плавающей точкой.

Попробуем по-другому. Зададим иную команду, желая получить целое число: print(7 * int(4.9)) тут мы число float заключили в функцию int() которая перевела в целое число. В результате мы получили значение 28. Оппа, почему же так вышло? Важно осознать тот факт, что Python числа не округляет. А все, что он сделал, это просто откинул от 4.9 девятку и произвел простое умножение 7*4, что и дало нам результат, равный 28.

Представьте себе ситуацию, что вы являетесь владельцем интернет–магазина по продаже книг. Покупатель приобретает у вас 7 изданий по 4.9$ за каждое и в вашем коде используется пример подсчета, который мы описали выше. Через какой промежуток времени вы разоритесь, отдавая 7 книг за 28$?

Примерный подсчет прибыли с продажи книг

Как же сделать так, чтобы наш результат был наиболее приближен к верному? Для этого существует функция round(), которая как раз и округляет числа.

Например: print(round(7 * 4.9)) в результате получим ожидаемый результат: 34. В данном случае мы дали задачу умножить 7 * 4.9 и получили в итоге 34.300000000000004, после чего функция round() округлила к 34. Такой метод подсчета наиболее подходит к решениям типичных задач, где не нужна точность, а важнее всего результат. Теперь нам стало ясно, что за 7 книг мы должны были запросить как минимум 34$. Уже лучше. Но такой пример в расчетах, где большую роль играет точность, не подойдет.

Так же внимательно посмотрите на различные результаты при: print(round(7 * 4.9)) и print(7 * round(4.9)). В первом варианте мы округляем полученный результат от умножения, а во втором непосредственно число 4.9. Именно поэтому и получаем абсолютно разные цифры. Этот момент очень важно уловить!

В данном уроке передо мной ставилась задача максимально понятно объяснить разницу между целыми и дробными значениями. А также то, что мы можем с легкостью работать с ними, переводить целое число в дробное float(34) и наоборот int(34.44).

На следующем занятии я продемонстрирую интересную возможность получить точнейший результат из примера, приведенного выше. Используя Python числа и модуль Decimal(), мы высчитаем необходимую стоимость книг, которую нам обязан заплатить покупатель.