首页 > 编程笔记 > Python笔记 阅读:60

Python float浮点数类型详解(附带实例)

浮点数(float)是 Python 中的一个基本数据类型,用来表示带有小数部分的数字,比如 3.14、-0.001 ,常用于科学计算、统计分析和日常数学运算。
 

在 Python 中,定义浮点数常直接用小数点或者科学计数法表示:

x = 3.14      # 普通小数
y = -0.5      # 负小数
z = 2.5e3     # 科学计数法,表示 2.5 × 10³ = 2500.0

Python 浮点数基于 IEEE 754 标准实现,通常占用 64 位(双精度),这意味着它有一定的精度和范围限制。

Python浮点数的常见操作

浮点数支持多种数学运算和函数操作,下面罗列了几种常见的浮点数操作。

1) 基本数学运算

浮点数可以进行加、减、乘、除等基本运算,结果通常也是浮点数。
 

基本算法 运算符号 举 例
加法 + 1.5 + 2.3 = 3.8
减法 - 5.7 - 2.2 = 3.5
乘法 * 2.5 * 3.0 = 7.5
除法 / 5.0 / 2.0 = 2.5(始终返回浮点数)
整除 // 5.7 // 2.0 = 2.0(返回浮点数形式的整数部分)
取余 % 5.7 % 2.0 = 1.7000000000000002
幂运算 ** 2.0 ** 3.0 = 8.0
例如:
a = 5.7
b = 2.0
print(a + b)   # 输出 7.7
print(a - b)   # 输出 3.7
print(a * b)   # 输出 11.4
print(a / b)   # 输出 2.85
print(a // b)  # 输出 2.0
print(a % b)   # 输出 1.7000000000000002
print(a ** b)  # 输出 32.49

2) Python浮点数内置数学函数

Python 的 math 模块提供了许多针对浮点数的函数,比如取整、绝对值、三角函数等。

使用 math 模块前需要导入模块,例如:

import math

x = 3.7
print(math.floor(x))   # 输出 3(向下取整)
print(math.ceil(x))    # 输出 4(向上取整)
print(math.trunc(x))   # 输出 3(截断小数部分)
print(abs(-x))         # 输出 3.7(绝对值)
print(math.sqrt(16.0)) # 输出 4.0(平方根)

上述程序返回的结果通常是浮点数。

3) 类型转换

在 Python 中,可以用 float() 函数将其他类型转换为浮点数,例如整数或字符串。也可以用 int() 或 str() 等函数将浮点数转换为其他类型。

例如:

a = float(5)        # 整数转浮点数
b = float("3.14")   # 字符串转浮点数
c = int(3.99)       # 浮点数转整数(截断小数)
d = str(2.5)        # 浮点数转字符串
print(a)            # 输出 5.0
print(b)            # 输出 3.14
print(c)            # 输出 3
print(d)            # 输出 "2.5"

注意:如果字符串无法转换为浮点数(比如 "abc"),会抛出 ValueError 异常。

Python浮点数的精度问题

浮点数在计算机中以二进制形式存储,这导致某些小数无法被精确表示。

例如,0.1 在二进制中是一个无限循环小数,因此会出现精度误差:

print(0.1 + 0.2)  # 输出 0.30000000000000004

这是 IEEE 754 标准的常见现象,不是 Python 独有的问题。

处理精度问题,Python 程序中可以借助 round() 函数或者 decimal 模块解决:

1) round() 函数可以控制小数位数。例如:

print(round(0.1 + 0.2, 1))  # 输出 0.3


2) decimal 模块可以提供更高精度的十进制运算。例如:

from decimal import Decimal, getcontext
getcontext().prec = 4  # 设置精度为 4 位
a = Decimal("0.1")
b = Decimal("0.2")
print(a + b)  # 输出 0.3


由于精度问题,直接比较两个浮点数是否相等可能会出现意外结果。例如:

print(0.1 + 0.2 == 0.3)  # 输出 False

解决方法是比较它们的差值是否足够小。例如:

a = 0.1 + 0.2
b = 0.3
print(abs(a - b) < 1e-10)  # 输出 True(差值小于 10⁻¹⁰)

这种方法在实际编程中更可靠。

总结

在 Python 中使用 float 浮点数类型时,还有以下几点需要注意:

相关文章