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

如何将值为0.9533的浮点数转换为整数9553?

问题描述

我有一个值为0.9533的float变量,如何将其转换为int变量,使值变为9533?(注:原问题中写的9553应为笔误)

我的代码如下:

a = ((i.left + i.right) / 2)
a = ("{:.4f}".format(a)) # 获取a: float = 0.9533
print(f"Result 1: {a}")
b = int(a * 10000) # 获取b: int
print(f"Result 2: {b}")

运行后出现错误:

Result 1: 0.9533
ValueError: invalid literal for int() with base 10: '0.95330.95330...95330'
问题原因

"{:.4f}".format(a)执行后,变量a的类型从float变成了字符串。字符串执行乘法操作时,会重复自身内容,比如"0.9533" * 10000会生成一串重复的0.9533拼接字符串,这种格式的字符串无法被int()解析,因此抛出ValueError。

解决方案

提供两种可行的修正方案:

  • 方案一:直接对float值操作(推荐)
    跳过转字符串的步骤,直接对原始float值先乘10000,再转int。考虑到浮点数精度问题,建议用round()做四舍五入处理:

    a = ((i.left + i.right) / 2)
    b = int(round(a * 10000))
    print(f"Result 2: {b}")
    
  • 方案二:若需保留字符串格式化步骤
    先把格式化后的字符串转回float,再执行乘法和转int操作:

    a = ((i.left + i.right) / 2)
    a_formatted = "{:.4f}".format(a)
    print(f"Result 1: {a_formatted}")
    b = int(float(a_formatted) * 10000)
    print(f"Result 2: {b}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:31:04