如何在 Java 中截断 double 类型小数至两位(不四舍五入)
发布时间 - 2026-01-23 00:00:00 点击率:次java 中截断 double 小数位数到两位(非四舍五入),需避免 `printf` 等默认向上/银行舍入行为,推荐使用 `decimalformat` 配合 `roundingmode.down` 或 `bigdecimal.setscale(2, roundingmode.down)` 实现精确截断。
在 Java 中,System.out.printf("%.2f", 19.867) 或 String.format("%.2f", 19.867) 默认采用 HALF_UP 舍入模式,因此会输出 19.87 —— 这是“四舍五入”,而非题目要求的“直接截断”(即向零方向舍去多余小数)。要实现真正的保留两位小数且不进位(如 19.867 → 19.86,-3.149 → -3.14),必须显式指定舍入模式为 RoundingMode.DOWN。
✅ 推荐方案一:使用 DecimalFormat
import java.text.DecimalFormat; import java.math.RoundingMode; double number1 = 19.867; DecimalFormat df = new DecimalFormat("#.##"); df.setRoundingMode(RoundingMode.DOWN); System.out.println(df.format(number1)); // 输出:19.86
⚠️ 注意:"#.##" 模式会自动省略末尾零(如 5.0 → "5"),若需强制显示两位小数(如 5.00),应改用 "0.00" 模式:
DecimalFormat df = new DecimalFormat("0.00"); // 保证输出两位小数
df.setRoundingMode(RoundingMode.DOWN);✅ 推荐方案二:使用 BigDecimal(更精确、推荐用于金融等敏感场景)
import java.math.BigDecimal;
import java.math.RoundingMode;
double number1 = 19.867;
BigDecimal bd = new BigDecimal(Double.toString(number1)) // ⚠️ 关键:用字符串构造,避免 double 二进制精度误差
.setScale(2, RoundingMode.DOWN);
System.out.println(bd.doubleValue()); // 19.86
// 或直接获取字符串结果(推荐):
System.out.println(bd.toString()); // "19.86"❗ 重要提醒:务必使用 new BigDecimal(Double.toString(number1)) 而非 new BigDecimal(number1),否则可能因 double 的二进制表示缺陷引入意外精度误差(例如 0.1 在 double 中本就不精确)。
? 总结:
- printf / String.format 不支持自定义舍入模式,不可用于截断需求;
- DecimalFormat 简洁易用,适合格式化输出,但注意模式选择与零值显示逻辑;
- BigDecimal 更健壮、精确,是处理货币或高精度截断的首选,务必通过字符串构造以规避浮点误差;
- 所有方案中,RoundingMode.DOWN 表示“向零方向舍去”,对正负数均有效(-19.867 → -19.86,非 -19.87)。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
香港服务器WordPress建站指南:SEO优化与高效部署策略
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
JS经典正则表达式笔试题汇总
linux top下的 minerd 木马清除方法
如何在搬瓦工VPS快速搭建网站?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
jQuery 常见小例汇总
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
教你用AI将一段旋律扩展成一首完整的曲子
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
网站制作报价单模板图片,小松挖机官方网站报价?
如何获取PHP WAP自助建站系统源码?
手机网站制作与建设方案,手机网站如何建设?
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
网站建设保证美观性,需要考虑的几点问题!
制作电商网页,电商供应链怎么做?
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
JavaScript如何实现继承_有哪些常用方法
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
Laravel怎么使用artisan命令缓存配置和视图
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何用好域名打造高点击率的自主建站?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
微信小程序 HTTPS报错整理常见问题及解决方案
简单实现jsp分页
IOS倒计时设置UIButton标题title的抖动问题
Python文件操作最佳实践_稳定性说明【指导】
大型企业网站制作流程,做网站需要注册公司吗?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
C++用Dijkstra(迪杰斯特拉)算法求最短路径
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
javascript日期怎么处理_如何格式化输出
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
如何制作一个表白网站视频,关于勇敢表白的小标题?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何安全更换建站之星模板并保留数据?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何在IIS7中新建站点?详细步骤解析
米侠浏览器网页背景异常怎么办 米侠显示修复
JavaScript实现Fly Bird小游戏
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?


