本文主要是介绍Python基本数据类型之浮点数float,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
来源: “码农不会写诗”公众号
链接:Python基本数据类型之浮点数float
文章目录
- 01 基本概念
- 02 基本运算
- 03 拓展1之decimal模块
浮点数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基本数据类型之浮点数float的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!