(Python) Вещественные числа


Вещественные числа

В программировании числа классифицируются прежде всего на целые (integer, тип int в Python) и вещественные (тип float).

Чтобы определить тип переменной в Python, можно использовать встроенную функцию type():
name = "Ivan"       # строка "Ivan"
print(type(name))   # на экране будет <class 'str'>

n = 5               # целое число
print(type(n))      # <class 'int'>

r = 5.0             # вещественное число
print(type(r))      # <class 'float'>
 
В программировании вещественными числами называются числа, которые имеют в своей записи десятичную точку. Разделителем целой и дробной частей является точка, а не запятая, как в математике.

В Python вещественные числа представляются числами с плавающей запятой (тип данных float). Они могут быть положительными, отрицательными или равны нулю. Python использует стандарт IEEE 754 для представления вещественных чисел.

Даже если дробная часть равна нулю, транслятор Python всё равно создаст в памяти вещественную переменную. Это происходит потому, что в записи числа есть десятичная точка! Для транслятора это является сигналом, что необходимо создать вещественную переменную.

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

Показателен следующий программный код, который показывает неточность хранения вещественных чисел в памяти компьютера
print(0.1 + 0.1 + 0.1 - 0.3)    # 5.551115123125783e-17, 
                                # а не ноль, как ожидалось

Ввод

Для того, чтобы ввести вещественное число с помощью функции input() - необходимо преобразовать символьную строку, которая является результатом работы функции input(), в вещественное число с помощью функции float():
x = float(input())
Если необходимо ввести сразу несколько значений из одной строке, то используем тот же способ, что и для целых чисел:
x, y = map(float, input().split())

 

Вывод

При выводе вещественных чисел по умолчанию выводится 16 знаков после запятой. Не всегда такой формат необходим. Если нужно сократить формат вывода, то используется форматный вывод или F-строки.


Форматный вывод
Для этого применяется метод format() к строке, которую мы хотим вывести. А внутри строки записываются форматы в фигурных скобках после двоеточия. В круглых скобках функции format(), указываются имена переменных (или константы), значения которых будут подставляться в строку вместо фигурных скобок в указанном формате. Количество переменных должно совпадать с количеством фигурных скобок. Данный способ работает в Python, начиная с версии 3.
 
Пример
Пример Пояснение Вывод на экране
x = 1 / 6 
print("{:f}".format(x))
формат :f выводит по умолчанию 6 цифр  в дробной части
0.166667
x = 1 / 6 
print("{:.3f}".format(x))
:.3 обозначает, что необходимо вывести 3 знака после точки
0.167
x = 1 / 6 
print("{:12.4e}".format(x))
:12.4 - первое число (12) задает  общее количество позиций на вывод числа (включая точку);
второе число (4) - количество цифр в дробной части;
формат e - выводит число в научном формате.
  1.6667e-01
x = 123.45678901234567
print("{:.6g}".format(x)) 

{:.6g} - форматирует число так, чтобы оставить не более шести значащих цифр, и автоматически округляет число.

123.457
 


F-строка 
Еще один способ вывести на экран отформатированную строку - это использование f-строк (f-string). Данный способ доступен в Python, начиная с версии 3.6.
print(f"{x:f}")
print(f"{x:.3f}")
print(f"{x:12.4e}") 
F-строка - это строка-шаблон, начинается с символа (или F). Каждый раз когда мы хотим вставить в строку значение какой-либо переменной, нам нужно добавить  имя переменной, заключенной в фигурные скобки {}. Внутри фигурных скобок можно указать способ форматирования, который аналогичен методу fomat().


Кроме метода format() и F-строк, можно использовать другие способы форматирования вывода. Тот же самый результат получим, записав операторы вывода следующим образом:
print("%f" % (x))
print("%.3f" % (x))
print("%12.4e" % (x))
Такой способ форматирования имитирует функцию printf() языка С. Способ считается устаревшим, но в ряде случаев он бывает удобнее. Кроме этого, данный способ единственный (из указанных здесь), который работает в Python версии 2.5 и ниже.

Преобразование вещественного числа к целому

При решении задач часто приходится округлять вещественные числа до ближайших целых значений. Для этого имеются две функции.
 
Надо запомнить!
  1. Функция int(x) - отбрасывает дробную часть вещественного числа x.
  2. Функция round(x) - округляет вещественное число x до ближайшего целого (если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа).
Примеры
print(int(20.12345))    # 20
print(round(2.5))    # 2
print(round(3.5))    # 4
print(round(-2.5))    # -2
print(round(-3.5))    # -4

Встроенные функции

Язык программирования Python включает много стандартных функций. Программист не видит их реализацию, она скрыта. Достаточно знать, как эти функции называются и что они делают.

Мы уже сталкивались с встроенными функциями:

  • print() — вывести на экран;
  • input() — считать с клавиатуры;
  • int() — преобразовать к целому числу;
  • float() — преобразовать к числу с плавающей точкой.

Функции min() и max()

Для определения минимального или максимального значения используются функции min() и max() соответственно.  Аргументов у этих функций может быть любое количество, главное, чтобы они все были одного типа.

print(min(1, 2, -8, 7))    # -8
print(max(2.5, -7.4, 13.9))    # 13.9


Модуль числа

Модулем положительного числа называется само число, модулем отрицательного числа называется противоположное ему число, модуль нуля – нуль. Для нахождения модуля  числа в Python используется стандартная функция abs().

 
print(abs(-8))    # 8
print(abs(8))    # 8
print(abs(0))    # 0


Модуль math

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

Модуль math – один из наиважнейших в Python. Этот модуль предоставляет обширный функционал для проведения вычислений с вещественными числами (числами с плавающей точкой). Для использования этих функций в начале программы необходимо подключить модуль, что делается командой import:

import math
# программный код


Приведем некоторые функции из этой библиотеки, которые полезно знать на начальном этапе программирования.

Функция Описание
Округление
int(x) Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math.
round(x) Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа. round(1.5) == 2round(0.5) == 0. 
Это стандартная функция, для ее использования не нужно подключать модуль math.  
round(x, n) Округляет число x до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать модуль math.  
floor(x) Округляет число вниз («пол»), при этом floor(1.5) == 1floor(-1.5) == -2
ceil(x) Округляет число вверх («потолок»), при этом ceil(1.5) == 2ceil(-1.5) == -1
abs(x) Модуль (абсолютная величина). Это — стандартная функция.
Корни, логарифмы
sqrt(x) Квадратный корень. Использование: math.sqrt(x).
Например, строка 
print(math.sqrt(4))
выведет 2.0.
log(x) Натуральный логарифм (логарифм по основанию e). Запись вида 
c = math.log(x, b) 
возвращает в переменную c значение логарифма по основанию b.
e Основание натуральных логарифмов e = 2,71828...
Тригонометрия
sin(x) Синус угла, задаваемого в радианах.
cos(x) Косинус угла, задаваемого в радианах.
tan(x) Тангенс угла, задаваемого в радианах.
asin(x) Арксинус, возвращает значение в радианах.
acos(x) Арккосинус, возвращает значение в радианах.
atan(x) Арктангенс, возвращает значение в радианах.
atan2(y, x) Полярный угол (в радианах) точки с координатами (x, y).
degrees(x) Преобразует угол, заданный в радианах, в градусы.
radians(x) Преобразует угол, заданный в градусах, в радианы.
pi Константа π = 3.1415...

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация