118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.8 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/)上找到。
 | 
						||
 | 
						||
可以使用[浮点文字](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` (非数字),负`infinity`和`infinity`数字表示(注意这些字符串不区分大小写):
 | 
						||
```
 | 
						||
>>> float('nan') 
 | 
						||
 nan 
 | 
						||
 >>> float('inf') 
 | 
						||
 inf 
 | 
						||
 >>> float('-inf') 
 | 
						||
 -inf 
 | 
						||
 >>> float('infinity') 
 | 
						||
 inf 
 | 
						||
 >>> float('-infinity') 
 | 
						||
 -inf 
 | 
						||
 | 
						||
``` |