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

BigDecimal调用multiply/divide返回0E-11类结果,是十六进制格式吗?

问题原因

你得到的0E-11不是十六进制格式,是Java BigDecimal类默认的计数法输出形式,具体原因如下:

  • 首先你的代码逻辑本身就会得到0值:初始wallet被赋值为0.0,任何数乘以0的结果始终为0,循环5次乘以0.01后,最终本质是一个数值为0、精度保留11位小数的BigDecimal对象。
  • BigDecimal的toString()方法会根据数值的标度(也就是保留的小数位数)自动选择输出格式:当数值的小数位过长,或者是带标度的0值时,会自动用工程计数法输出。0E-11的含义是0 乘以 10的-11次方,和常规十进制的0.00000000000完全等价,不存在格式错误。

解决方法

如果要输出常规的十进制格式,直接调用BigDecimal的toPlainString()方法即可,修改输出代码为:

System.out.println(wallet.toPlainString());

修改后运行输出结果为0.00000000000,符合你预期的常规十进制格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 22:36:01