当前位置:首页>python>Python整数与浮点数——数字处理的基石

Python整数与浮点数——数字处理的基石

  • 2026-09-08 21:42:30
Python整数与浮点数——数字处理的基石

一、数字类型概述

Python中有三种数字类型:

类型
名称
示例
说明
int
整数
10
、-5、1000000
没有小数点的数字
float
浮点数
3.14
、-0.5、2.0
带小数点的数字
complex
复数
3+4j
科学计算用,本文不展开

二、整数(int)

2.1 整数的定义

# 正整数age = 25count = 100year = 2024# 负整数temperature = -5debt = -1000# 零zero = 0# 查看类型print(type(age))  # <class 'int'>

2.2 整数的特性

特性1:无大小限制

# Python整数可以无限大(只受内存限制)big_number = 123456789012345678901234567890print(big_number)  # 123456789012345678901234567890bigger = 10 ** 100# 10的100次方print(bigger)  # 天文数字,照样能算

特性2:不同进制表示

# ��制(默认)a = 255# 二进制(以0b开头)b = 0b11111111# 二进制11111111 = 十进制255print(b)  # 255# 八进制(以0o开头)c = 0o377# 八进制377 = 十进制255print(c)  # 255# 十六进制(以0x开头)d = 0xFF# 十六进制FF = 十进制255print(d)  # 255

特性3:下划线分隔(提升可读性)

# Python3.6+支持用下划线分隔数字million = 1_000_000# 100万print(million)  # 1000000population = 14_000_000_000# 140亿price = 99_999.99

三、浮点数(float)

3.1 浮点数的定义

# 标准写法pi = 3.14159price = 19.99temperature = 36.5# 科学计数法avogadro = 6.02e23# 6.02 × 10^23electron = 1.6e-19# 1.6 × 10^-19# 整数点零(也是浮点数)x = 10.0y = 0.0# 查看类型print(type(pi))  # <class 'float'>

3.2 浮点数的精度问题

⚠️ 重要特性:浮点数有精度误差

# 经典问题:0.1 + 0.2 ≠ 0.3print(0.1 + 0.2)  # 0.30000000000000004print(0.1 + 0.2 == 0.3)  # False# 原因:计算机用二进制表示小数,无法精确表示某些十进制小数

解决方案:

# 方法1:四舍五入到指定位数result = 0.1 + 0.2print(round(result, 2))  # 0.3# 方法2:使用Decimal模块(精确计算)from decimal import Decimala = Decimal('0.1')b = Decimal('0.2')print(a + b)  # 0.3print(a + b == Decimal('0.3'))  # True

四、整数 vs 浮点数对比

特性
整数(int)
浮点数(float)
有无小数
无
有
精度
精确
近似(有误差)
范围
无限制
有限(约±10^308)
内存
可变(取决于大小)
固定(8字节)
运算速度
快
稍慢
适用场景
计数、索引、循环
科学计算、测量值
# 类型转换x = 10y = 3.14# 整数转浮点数x_float = float(x)  # 10.0# 浮点数转整数(直接截断,不四舍五入)y_int = int(y)  # 3(丢掉小数部分)# 四舍五入取整z = round(3.6)  # 4

五、基本运算

5.1 算术运算符

a = 15b = 4print(f"{a} + {b} = {a + b}")   # 加法:19print(f"{a} - {b} = {a - b}")   # 减法:11print(f"{a} * {b} = {a * b}")   # 乘法:60print(f"{a} / {b} = {a / b}")   # 除法:3.75(结果是浮点数)print(f"{a} // {b} = {a // b}") # 整除:3(取商的整数部分)print(f"{a} % {b} = {a % b}")   # 取余:3print(f"{a} ** {b} = {a ** b}") # 幂:15^4 = 50625

5.2 运算结果类型

# 整数运算print(10 + 3)    # 13 (int)print(10 - 3)    # 7 (int)print(10 * 3)    # 30 (int)print(10 ** 3)   # 1000 (int)# 除法例外:整数相除得到浮点数print(10 / 2)    # 5.0 (float) 即使能整除print(9 / 2)     # 4.5 (float)# 混合运算:只要有一个浮点数,结果就是浮点数print(10 + 3.0)  # 13.0 (float)print(5 * 2.5)   # 12.5 (float)

5.3 增强赋值运算符

x = 10x += 3# 等价于 x = x + 3print(x)  # 13x -= 5# 等价于 x = x - 5print(x)  # 8x *= 2# 等价于 x = x * 2print(x)  # 16x /= 4# 等价于 x = x / 4print(x)  # 4.0

六、常用数学函数

6.1 内置函数

# 绝对值print(abs(-5))     # 5print(abs(3.14))   # 3.14# 四舍五入print(round(3.14159, 2))  # 3.14(保留2位小数)print(round(3.6))         # 4(取整)# 幂运算print(pow(2, 10))  # 1024(2的10次方)# 最大值/最小值print(max(10, 20, 15))  # 20print(min(10, 20, 15))  # 10# 求和numbers = [1, 2, 3, 4, 5]print(sum(numbers))  # 15

6.2 math模块

import math# 常数print(math.pi)       # 3.141592653589793print(math.e)        # 2.718281828459045# 向上取整/向下取整print(math.ceil(3.2))   # 4(向上取整)print(math.floor(3.8))  # 3(向下取整)print(math.trunc(3.8))  # 3(截断小数)# 平方根print(math.sqrt(16))    # 4.0# 三角函数print(math.sin(math.pi/2))  # 1.0print(math.cos(0))          # 1.0# 对数print(math.log(100, 10))  # 2.0(以10为底)print(math.log10(100))    # 2.0(常用对数)print(math.log(100))      # 约4.605(自然对数)

七、实战案例

案例1:温度转换器

"""摄氏温度(C)与华氏温度(F)转换公式:F = C * 9/5 + 32     C = (F - 32) * 5/9"""# 摄氏转华氏celsius = 25fahrenheit = celsius * 9/5 + 32print(f"{celsius}°C = {fahrenheit}°F")# 华氏转摄氏f = 77c = (f - 32) * 5 / 9print(f"{f}°F = {c:.1f}°C")# 批量转换temperatures_c = [0, 20, 30, 37, 100]for c in temperatures_c:    f = c * 9/5 + 32print(f"{c:3}°C = {f:5.1f}°F")

案例2:BMI计算器

"""BMI = 体重(kg) / 身高(m)的平方"""# 输入weight = 70.5# 公斤height = 1.75# 米# 计算bmi = weight / (height ** 2)# 输出结果print(f"体重:{weight}kg")print(f"身高:{height}m")print(f"BMI:{bmi:.2f}")# 判断if bmi < 18.5:print("体重偏轻")elif bmi < 24:print("体重正常")elif bmi < 28:print("体重偏重")else:print("肥胖")

案例3:货币兑换

"""人民币(CNY)与美元(USD)兑换汇率:1 USD = 7.25 CNY(示例)"""# 汇率(常量用大写)USD_TO_CNY = 7.25# 美元转人民币usd_amount = 100cny_amount = usd_amount * USD_TO_CNYprint(f"${usd_amount} = ¥{cny_amount:.2f}")# 人民币转美元cny = 1000usd = cny / USD_TO_CNYprint(f"¥{cny} = ${usd:.2f}")# 保留2位小数,四舍五入print(f"实际支付:¥{round(cny_amount, 2)}")

案例4:平均数计算器

"""计算任意多个数的平均数"""# 方法1:固定个数scores = [85, 92, 78, 90, 88]average = sum(scores) / len(scores)print(f"成绩:{scores}")print(f"平均分:{average:.1f}")# 方法2:用户输入numbers = []print("请输入数字(输入q结束):")whileTrue:    user_input = input()if user_input.lower() == 'q':breaktry:        num = float(user_input)        numbers.append(num)except ValueError:print("请输入有效数字!")if numbers:    avg = sum(numbers) / len(numbers)print(f"您输入了{len(numbers)}个数字")print(f"总和:{sum(numbers)}")print(f"平均:{avg:.2f}")

案例5:利息计算器

"""复利计算:A = P(1 + r)^tP: 本金r: 年利率t: 年数A: 本息合计"""# 定投计算principal = 10000# 本金1万rate = 0.03# 年利率3%years = 5# 5年# 复利计算total = principal * (1 + rate) ** yearsinterest = total - principalprint(f"本金:¥{principal:,.0f}")print(f"年利率:{rate*100}%")print(f"期限:{years}年")print(f"本息合计:¥{total:,.2f}")print(f"获得利息:¥{interest:,.2f}")# 不同利率对比print("\n不同利率对比(5年期):")for r in [0.02, 0.03, 0.04, 0.05]:    total = principal * (1 + r) ** yearsprint(f"利率{r*100:3.0f}%:¥{total:>10,.2f}")

八、常见问题与技巧

问题1:浮点数比较

# ❌ 不要直接比较浮点数a = 0.1 + 0.2b = 0.3print(a == b)  # False# ✅ 应该比较差值epsilon = 1e-10# 很小的容差值print(abs(a - b) < epsilon)  # True

问题2:整数除法陷阱

# Python 2:整数除法向下取整# Python 3:正常除法# ✅ Python3print(5 / 2)   # 2.5print(5 // 2)  # 2# 负数整除:向下取整print(-5 // 2)  # -3(因为-2.5向下取整是-3)

问题3:大数运算性能

# 计算阶乘import mathimport time# 方法1:循环start = time.time()result1 = 1for i inrange(1, 100001):    result1 *= itime1 = time.time() - start# 方法2:math模块start = time.time()result2 = math.factorial(100000)time2 = time.time() - startprint(f"循环用时:{time1:.2f}秒")print(f"内置函数用时:{time2:.2f}秒")# 内置函数优化得好,通常更快

问题4:格式化输出技巧

price = 12345.6789# 保留小数print(f"{price:.2f}")      # 12345.68# 千位分隔符print(f"{price:,.2f}")     # 12,345.68# 左对齐/右对齐print(f"{price:<15.2f}")   # 左对齐,宽度15print(f"{price:>15.2f}")   # 右对齐,宽度15print(f"{price:^15.2f}")   # 居中,宽度15# 补零print(f"{price:015.2f}")   # 0000012345.68

九、总结

整数(int)使用场景

  • • ✅ 计数器:count += 1
  • • ✅ 索引:list[5]
  • • ✅ 循环:for i in range(10)
  • • ✅ 年龄、数量、年份等整数概念

浮点数(float)使用场景

  • • ✅ 测量值:身高、体重、温度
  • • ✅ 科学计算:π、e、三角函数
  • • ✅ 货币计算(注意精度)
  • • ✅ 百分比、比例

记忆口诀

整数浮点要分清除法返回浮点数浮点比较要容差格式化用f-stringmath模块功能强精度要求用Decimal

练习:综合应用

任务: 编写一个程序,计算圆的周长和面积

import math# 输入半径radius = float(input("请输入圆的半径:"))# 计算circumference = 2 * math.pi * radius  # 周长area = math.pi * radius ** 2# 面积# 输出(保留2位小数)print(f"\n半径:{radius}")print(f"周长:{circumference:.2f}")print(f"面积:{area:.2f}")# 额外:直径diameter = 2 * radiusprint(f"直径:{diameter:.2f}")

运行示例:

请输入圆的半径:5半径:5.0周长:31.42面积:78.54直径:10.00

最新文章

随机文章