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

Java中如何将浮点数11.885向下取整至两位小数?

问题解决:double类型向下取整到两位小数的正确实现

你遇到的问题根源在于double类型的精度限制:十进制的11.885无法用二进制浮点数精确存储,实际在内存中它的存储值略大于11.885(近似为11.885000000000001)。当你执行x * 100.0时,得到的是1188.5000000000001,Math.round会将这个值四舍五入为1189,最终结果自然是11.89。

不需要导入任何包的情况下,可以通过以下代码实现向下取整到两位小数:

double x = 11.885;
double y = Math.floor(x * 100.0 - 1e-10) / 100.0;

代码说明:

  • 先将x乘以100,把目标小数位转化为整数位
  • 减去一个极小的数值1e-10(十亿分之一),抵消double存储时的微小误差,确保原本的11.885对应的实际值被调整到略小于1188.5
  • 用Math.floor对调整后的值向下取整,得到1188
  • 最后除以100,还原到两位小数的格式,结果就是11.88

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:25:25