Java中如何获取保留两位小数的double类型值并赋值给变量
解决方法:获取四舍五入保留两位小数的double值
核心问题说明
double是二进制浮点数类型,它本身不会存储成“带两位小数的十进制形式”,你看到的1.65024161E7只是调试工具或控制台默认输出时的科学计数法表现,实际数值已经是四舍五入后的结果。你需要区分:
- 数值的计算精度(执行保留两位小数的四舍五入操作)
- 数值的显示格式(需要时用格式化工具转成带两位小数的字符串)
正确的实现方式
不要通过字符串来回转换,直接对原始数值做四舍五入计算,有两种可靠方案:
方案1:用BigDecimal(推荐,避免浮点数精度误差)
double original = x.getSrcToDestBytes(); // 四舍五入保留两位小数,转换为double类型 double rounded = new BigDecimal(original) .setScale(2, RoundingMode.HALF_UP) .doubleValue(); x.setByteFor95(rounded);
方案2:用Math.round(简单场景适用)
double original = x.getSrcToDestBytes(); // 乘以100后取整,再除以100.0得到保留两位小数的结果 double rounded = Math.round(original * 100.0) / 100.0; x.setByteFor95(rounded);
关于显示的补充
如果需要把最终的double值以16502416.10这种带两位小数的普通十进制形式展示,不要直接输出double变量,而是继续用DecimalFormat格式化:
DecimalFormat formatter = new DecimalFormat("0.00"); System.out.println(formatter.format(x.getByteFor95()));
内容的提问来源于stack exchange,提问作者RagaSGNur
相关产品推荐
相关产品推荐

