118 lines
4.2 KiB
Markdown
118 lines
4.2 KiB
Markdown
---
|
||
title: Python Floating Point Numbers
|
||
localeTitle: Числа с плавающей запятой Python
|
||
---
|
||
Некоторая общая информация о числах с плавающей запятой и о том, как они работают на Python, можно найти [здесь](https://docs.python.org/3/tutorial/floatingpoint.html) .
|
||
|
||
Почти все реализации Python соответствуют спецификации IEEE 754: стандарт для двоичной арифметики с плавающей запятой. Более подробная информация содержится на сайте [IEEE](http://grouper.ieee.org/groups/754/) .
|
||
|
||
Объекты Float могут быть созданы с использованием [литералов](https://docs.python.org/3/reference/lexical_analysis.html#floating-point-literals) с [плавающей запятой](https://docs.python.org/3/reference/lexical_analysis.html#floating-point-literals) :
|
||
```
|
||
>>> 3.14
|
||
3.14
|
||
>>> 314\. # Trailing zero(s) not required.
|
||
314.0
|
||
>>> .314 # Leading zero(s) not required.
|
||
0.314
|
||
>>> 3e0
|
||
3.0
|
||
>>> 3E0 # 'e' or 'E' can be used.
|
||
3.0
|
||
>>> 3e1 # Positive value after e moves the decimal to the right.
|
||
30.0
|
||
>>> 3e-1 # Negative value after e moves the decimal to the left.
|
||
0.3
|
||
>>> 3.14e+2 # '+' not required but can be used for exponent part.
|
||
314.0
|
||
```
|
||
|
||
Числовые литералы не содержат знак, однако создания негативных объектов с плавающей точкой можно предваряя с одноместный `-` (минус) оператором без пробела перед буквальным
|
||
```
|
||
>>> -3.141592653589793
|
||
-3.141592653589793
|
||
>>> type(-3.141592653589793)
|
||
<class 'float'>
|
||
```
|
||
|
||
Аналогично, позитивные объекты с плавающей запятой могут иметь префикс унарного `+ (` плюс) оператора без пробела перед литералом. Обычно `+` опущен:
|
||
```
|
||
>>> +3.141592653589793
|
||
3.141592653589793
|
||
```
|
||
|
||
Обратите внимание, что начальный и конечный ноль (ы) действительны для литералов с плавающей запятой
|
||
```
|
||
>>> 0.0
|
||
0.0
|
||
>>> 00.00
|
||
0.0
|
||
>>> 00100.00100
|
||
100.001
|
||
>>> 001e0010 # Same as 1e10
|
||
10000000000.0
|
||
```
|
||
|
||
Конструктор [`float`](https://docs.python.org/3/library/functions.html#float) - это еще один способ создания `float` объектов.
|
||
|
||
При необходимости предпочтительнее `float` объекты с плавающей точкой с литералами с плавающей запятой:
|
||
```
|
||
>>> a = 3.14 # Prefer floating point literal when possible.
|
||
>>> type(a)
|
||
<class 'float'>
|
||
>>> b = int(3.14) # Works but unnecessary.
|
||
>>> type(b)
|
||
<class 'float'>
|
||
```
|
||
|
||
Однако конструктор float позволяет создавать объекты float из других типов номеров:
|
||
```
|
||
>>> a = 4
|
||
>>> type(a)
|
||
<class 'int'>
|
||
>>> print(a)
|
||
4
|
||
>>> b = float(4)
|
||
>>> type(b)
|
||
<class 'float'>
|
||
>>> print(b)
|
||
4.0
|
||
>>> float(400000000000000000000000000000000)
|
||
4e+32
|
||
>>> float(.00000000000000000000000000000004)
|
||
4e-32
|
||
>>> float(True)
|
||
1.0
|
||
>>> float(False)
|
||
0.0
|
||
```
|
||
|
||
Конструктор `float` также будет создавать объекты `float` из строк, которые представляют числовые литералы:
|
||
```
|
||
>>> float('1')
|
||
1.0
|
||
>>> float('.1')
|
||
0.1
|
||
>>> float('3.')
|
||
3.0
|
||
>>> float('1e-3')
|
||
0.001
|
||
>>> float('3.14')
|
||
3.14
|
||
>>> float('-.15e-2')
|
||
-0.0015
|
||
```
|
||
|
||
Конструктор `float` также может использоваться для создания числового представления `NaN` (Not a Number), отрицательной `infinity` и `infinity` (строки примечаний для них нечувствительны к регистру):
|
||
```
|
||
>>> float('nan')
|
||
nan
|
||
>>> float('inf')
|
||
inf
|
||
>>> float('-inf')
|
||
-inf
|
||
>>> float('infinity')
|
||
inf
|
||
>>> float('-infinity')
|
||
-inf
|
||
|
||
``` |