Python中获取float类型小数位数(含末尾零)的方法
解决方案
情况1:获取Excel单元格设置的显示小数位数
如果需要拿到Excel里单元格格式指定的小数位数(比如单元格设置为保留2位小数,即使数值是1.2也显示1.20),可以直接读取Excel的单元格格式信息,用openpyxl实现:
from openpyxl import load_workbook # 加载Excel文件 wb = load_workbook("your_file.xlsx") ws = wb["Sheet1"] # 替换成你的工作表名 def extract_decimal_places(num_format): # 解析Excel的数字格式字符串 if "." not in num_format: return 0 # 拆分格式中的小数点部分,统计固定显示的零的数量(#是可选数字,不算) decimal_part = num_format.split(".")[1] return sum(1 for char in decimal_part if char == "0") # 遍历目标列(比如A列,从第2行开始跳过表头) for row in ws.iter_rows(min_row=2, min_col=1, max_col=1): cell = row[0] decimal_places = extract_decimal_places(cell.number_format) print(f"单元格{cell.coordinate}的显示小数位数: {decimal_places}")
情况2:获取数值实际存储的小数位数(含末尾零)
这种情况要求Excel里的数值是文本格式存储的(否则Excel会自动把1.20存为1.2,丢失末尾零),此时用pandas按字符串类型读取,再统计小数位数:
import pandas as pd # 读取时指定目标列为字符串类型 df = pd.read_excel("your_file.xlsx", dtype={"target_column": str}) def count_decimal_digits(s): if "." in s: return len(s.split(".")[-1]) return 0 # 计算小数位数并新增列 df["decimal_digits"] = df["target_column"].apply(count_decimal_digits)
注意事项
- 如果Excel里的数值是常规格式存储的浮点数,本质上1.2和1.20是同一个值,无法从数值本身恢复末尾零,只能通过读取单元格格式获取显示位数。
- 若必须保留数值的末尾零,建议在Excel中先将单元格设置为文本格式再输入数据,确保存储的是完整字符串。
内容的提问来源于stack exchange,提问作者t197453
相关产品推荐
相关产品推荐

