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

如何让double类型变量精确存储为带两位小数的形式(如1001.00)?

关于double类型存储带两位小数数值的问题
  • double类型本身无法保留小数点后两位零的格式:double是基于二进制的浮点数,它存储的是数值的近似值,1001.0和1001.00在数值上完全等价,编译器会将它们视为同一个值,内存中存储的内容没有区别。你写的double amount = 1001.00;本质上和double amount = 1001.0;是一样的。

  • 如果需要精确控制小数位数用于计算(比如金额类场景),放弃使用double,改用BigDecimal类型,它能精确维护小数位数:

    // 直接通过字符串初始化保证精度
    BigDecimal amount = new BigDecimal("1001.00");
    // 或者对整数设置两位小数精度
    BigDecimal amount = BigDecimal.valueOf(1001).setScale(2, RoundingMode.UNNECESSARY);
    
  • 如果只是后续展示时需要显示为两位小数,可以继续用double存储数值,在输出阶段做格式化处理:

    double amount = 1001.0;
    DecimalFormat df = new DecimalFormat("#.00");
    System.out.println(df.format(amount)); // 输出结果为1001.00
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:51:04