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

如何将科学计数法表示的数字转换为包含significand与exponent的tuple

科学计数法转有效数-指数元组实现方法

场景1:输入为科学计数法字符串

直接分割e字符即可实现,适合输入为字符串格式的场景,代码最简单:

def sci_str_to_tuple(sci_str: str) -> tuple[int, int]:
    # 统一转小写、去除首尾空格后按e分割两部分
    sig_part, exp_part = sci_str.strip().lower().split("e")
    return (int(sig_part), int(exp_part))

测试效果:

  • 输入"4e+3" → 输出 (4, 3)
  • 输入"4e-3" → 输出 (4, -3)

如果你的业务场景中有效数允许带小数,把代码里的int(sig_part)改成float(sig_part)即可适配。

场景2:输入为数值类型(float/int)

如果输入本身是数字(比如4000对应4e3、0.004对应4e-3),为了避免float原生精度误差,推荐用Python标准库的Decimal模块处理:

from decimal import Decimal

def sci_num_to_tuple(num: int | float) -> tuple[int, int]:
    # 先转字符串再转Decimal,规避float精度丢失问题
    dec = Decimal(str(num)).normalize()
    exp = dec.as_tuple().exponent
    sig = int(dec.scaleb(-exp))
    return (sig, exp)

测试效果:

  • 输入4000 → 输出 (4, 3)
  • 输入0.004 → 输出 (4, -3)

内容的提问来源于stack exchange,提问作者Sid-Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:36:04