浮点数(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 浮点数类型时,还有以下几点需要注意:

除法结果:即使两个操作数都是整数,/ 运算也返回浮点数,例如 4 / 2 = 2.0;

溢出:浮点数的范围很大(约 ±1.8 × 10³⁰⁸),但超过范围会变为 inf(无穷大);

格式化输出:可以用字符串格式化控制小数位数,例如print(f"{3.14159:.2f}")输出 "3.14"。