Python基本数据类型之浮点数float

来源: “码农不会写诗”公众号
链接:Python基本数据类型之浮点数float

浮点数float

  Python基本数据之浮点数(float)即带有小数的数字。


01 基本概念

即带有小数的数字。

在Python中,浮点数用float类型表示,可以存储有小数点的数,并支持小数点后的精确计算。

浮点数在计算机中以二进制形式存储,这就意味着可能无法精确表示某些十进制小数。例如,0.1在二进制中是一个无限循环小数,计算机只能存储其近似值。这种表示误差可能导致一些看似简单的运算产生意外结果,如0.1 + 0.2的和并不是精确的0.3,而是0.30000000000000004。

通常采用十进制和科学计数法表示浮点数

num1 = 3.14    # 3.14 十进制表示
num2 = 1e2     # 100 科学计数法

以上除八进制外,其他均为常用进制,需掌握。

02 基本运算

a = 3.5
b = 2.0
print(a + b)   # 5.5, 加法
print(a - b)   # 1.5, 减法
print(a * b)   # 7.0, 乘法
print(a / b)   # 1.75, 除法
print(a ** b)  # 12.25, 幂运算

格式化浮点数输出,主要有采用format()函数和格式化字符串字面量f-string方式。

pi = 3.1415927
print("{:.2f}".format(pi))    # 3.14, 保留两位小数
print(f"{pi:.3f}")            # 3.142, 保留三位小数
print("{:.5f}".format(1.23))  # 1.23000, 不足补零

需要注意的是,由于精度问题,直接比较两个浮点数是否相等可能不准确,可以使用math.isclose()函数进行比较,它允许在指定的容忍度内比较两个浮点数是否足够接近。

import math
a = 0.1 + 0.2
b = 0.3
# True, 根据指定公差(默认1e-09)判断是否近似相等 
print(math.isclose(a, b))

Python中浮点数还包括正无穷(float(‘inf’))、负无穷(float(‘-inf’)) 和 NaN(Not a Number,float(‘nan’))。

print(float('inf'))   # inf, 正无穷
print(float('-inf'))  # -inf, 负无穷
print(float('nan'))   # nan, 不是一个数字
print(float('inf') / 1000000)  # inf, 正无穷除以任何正数仍然是正无穷

注意浮点数转换为整数时,小数部分将被截断。

print(float(10))   # 10.0
print(int(3.999))  # 3, 小数部分被截断

03 拓展1之decimal模块

decimal模块提供了更精确的十进制数运算。

浮点数是Python中重要的数值类型,但精度问题需要在使用时格外注意。通过合理的方法,如使用decimal模块,可以在很多情况下避免精度问题,从而编写出更精确、更可靠的代码。


from decimal import Decimal
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)  # 0.3, 精确表示
print(0.1 + 0.2)  # 0.30000000000000004, 近似表示

需要注意的是,切勿滥用decimal模块,因为每一行代码都是有代价的,尤其像Python这种解释型编程语言。


今天的内容就到这里啦,先拜了个拜~

上一篇:Python基本数据类型之整数int
下一篇:Python基本数据类型之复数complex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农不会写诗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值