You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python/Odoo中对字符串类ICD-10编码保留1位小数

报错原因

round() 是Python内置的数值运算函数,仅支持整数、浮点数等数值类型作为入参。你传入的ICD-10编码是带字母前缀的字符串,无法被round()识别,因此直接触发类型报错。

正确实现方案

你的需求是保留小数点后1位,不需要对编码整体做数值运算,直接按字符串规则截取即可,示例代码如下:

# 读取原始编码
raw_code = patient_line.doc_disease_id.code
if raw_code and '.' in raw_code:
    # 按第一个小数点分割为前后两部分
    part_before_dot, part_after_dot = raw_code.split('.', 1)
    # 拼接前半部分+小数点+后半部分的第一个字符,统一转小写
    processed_code = f"{part_before_dot}.{part_after_dot[0]}".lower()
else:
    # 无小数点或编码为空的兼容逻辑,可按需调整
    processed_code = raw_code.lower() if raw_code else ' '
code.text = processed_code

如果需要对小数部分做四舍五入而不是直接截断,可以使用以下版本:

raw_code = patient_line.doc_disease_id.code
if raw_code and '.' in raw_code:
    part_before_dot, part_after_dot = raw_code.split('.', 1)
    # 仅对小数部分做数值运算后取1位
    rounded_suffix = round(float(f"0.{part_after_dot}"), 1)
    processed_code = f"{part_before_dot}.{str(rounded_suffix)[-1]}".lower()
else:
    processed_code = raw_code.lower() if raw_code else ' '
code.text = processed_code

内容的提问来源于stack exchange,提问作者Abraham Kalungi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:06:07