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

将字符串转为Double时toDouble()自动省略末尾0的问题求助

问题解决:字符串转Double后末尾0丢失的处理

问题原因

Double是浮点数类型,仅存储数值大小,不保留小数位数的格式信息。1.3和1.30在数值上完全等价,因此调用toDouble()转换后,会自动省略末尾无意义的0。

解决方案

根据你的需求场景,可选以下几种处理方式:

  • 直接返回格式化后的字符串(最简便)
    你已经通过String.format("%02d.%02d", ...)生成了带两位小数的字符串,直接返回该字符串即可保留1.30的格式,无需转成Double:

    val value = String.format(
        "%02d.%02d",
        TimeUnit.MILLISECONDS.toHours(milli) % 24,
        TimeUnit.MILLISECONDS.toMinutes(milli) % 60
    )
    return value
    
  • 用BigDecimal替代Double保留格式信息
    如果必须返回数值类型,使用BigDecimal可以保留字符串中的小数位数细节:

    val value = String.format(
        "%02d.%02d",
        TimeUnit.MILLISECONDS.toHours(milli) % 24,
        TimeUnit.MILLISECONDS.toMinutes(milli) % 60
    )
    return BigDecimal(value)
    

    后续需要展示时,可再通过BigDecimal的格式化方法输出指定小数位数。

  • 返回Double但展示时重新格式化
    若一定要返回Double类型,在需要显示结果的环节,重新对Double值做格式化处理:

    // 先转成Double
    val doubleValue = value.toDouble()
    // 展示时格式化
    val displayValue = String.format("%.2f", doubleValue) // 得到"1.30"
    

内容的提问来源于stack exchange,提问作者Saurabh G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:50:22