Python 小数/浮点数(详解)

本文介绍了Python中浮点数(小数)的两种表示形式:十进制和指数形式,并通过实例展示了其使用。Python的浮点数类型为float,能够处理极小和极大的数值。需要注意的是,由于二进制表示的局限性,浮点数计算可能不精确。
摘要由CSDN通过智能技术生成


前言

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

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

  1. 十进制形式
    这种就是我们平时看到的小数形式,例如 34.6、346.0、0.346。

书写小数时必须包含一个小数点,否则会被 Python 当作整数处理。

  1. 指数形式
    Python 小数的指数形式的写法为:
aEn 或 aen

a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;E或e是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 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 能容纳的小数范围比较大。

实例小数在 Python 中的使用:

    f1 = 12.5
    print("f1Value: ", f1)
    print("f1Type: ", type(f1))
    f2 = 0.34557808421257003
    print("f2Value: ", f2)
    print("f2Type: ", type(f2))
    f3 = 0.0000000000000000000000000847
    print("f3Value: ", f3)
    print("f3Type: ", type(f3))
    f4 = 345679745132456787324523453.45006
    print("f4Value: ", f4)
    print("f4Type: ", type(f4))
    f5 = 12e4
    print("f5Value: ", f5)
    print("f5Type: ", type(f5))
    f6 = 12.3 * 0.1
    print("f6Value: ", f6)
    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 的输出却不精确。这是因为小数在内存中是以二进制形式存储的,小数点后面的部分在转换成二进制时很有可能是一串无限循环的数字,无论如何都不能精确表示,所以小数的计算结果一般都是不精确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁辰兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值