ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python小数/浮点数(float)类型详解

2022-07-11 22:04:09  阅读:156  来源: 互联网

标签:Python 浮点数 float 尾数 print type 小数


编程语言中,小数通常以浮点数的形式存储。浮点数和定点数是相对的:小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。

Python中的小数有两种书写形式:

(1)十进制形式:就是我们平时看到的小数形式,例如:3.14,36.5,0.234等。书写时必须包含一个小数点,否则会被Python当做整数处理。

(2)指数形式:aEn或者aen

a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;Ee是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10n
指数形式的小数举例:

  • 2.1E5 = 2.1×105,其中 2.1 是尾数,5 是指数。
  • 3.7E-2 = 3.7×10-2,其中 3.7 是尾数,-2 是指数。
  • 0.5E7 = 0.5×107,其中 0.5 是尾数,7 是指数。

注意,只要写成指数形式就是小数,即使它的最终值看起来像一个整数。例如 14E3 等价于 14000,但 14E3 是一个小数。
Python 只有一种小数类型,就是 float。C语言有两种小数类型,分别是 float 和 double:float 能容纳的小数范围比较小,double 能容纳的小数范围比较大。

实例:

 1 f1 = 12.5
 2 print("f1Value: ", f1)
 3 print("f1Type: ", type(f1))
 4 
 5 f2 = 0.34557808421257003
 6 print("f2Value: ", f2)
 7 print("f2Type: ", type(f2))
 8 
 9 f3 = 0.0000000000000000000000000847
10 print("f3Value: ", f3)
11 print("f3Type: ", type(f3))
12 
13 f4 = 345679745132456787324523453.45006
14 print("f4Value: ", f4)
15 print("f4Type: ", type(f4))
16 
17 f5 = 12e4
18 print("f5Value: ", f5)
19 print("f5Type: ", type(f5))
20 
21 f6 = 12.3 * 0.1
22 print("f6Value: ", f6)
23 print("f6Type: ", type(f6))

运行结果:

f1Value:  12.5
f1Type:  <class 'float'>
f2Value:  0.34557808421257
f2Type:  <class 'float'>
f3Value:  8.47e-26
f3Type:  <class 'float'>
f4Value:  3.456797451324568e+26
f4Type:  <class 'float'>
f5Value:  120000.0
f5Type:  <class 'float'>
f6Value:  1.2300000000000002
f6Type:  <class 'float'>

从运行结果可以看出,Python 能容纳极小和极大的浮点数。print 在输出浮点数时,会根据浮点数的长度和大小适当的舍去一部分数字,或者采用科学计数法。
f5 的值是 120000,但是它依然是小数类型,而不是整数类型。
让人奇怪的是 f6,12.3*0.1的计算结果很明显是 1.23,但是 print 的输出却不精确。这是因为小数在内存中是以二进制形式存储的,小数点后面的部分在转换成二进制时很有可能是一串无限循环的数字,无论如何都不能精确表示,所以小数的计算结果一般都是不精确的。

标签:Python,浮点数,float,尾数,print,type,小数
来源: https://www.cnblogs.com/myx3/p/16468098.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有