java中double的四舍五入 BigDecimal
2024-08-29 14:44:25
转载:https://blog.csdn.net/xiaobing_122613/article/details/71077225
1. 功能
将程序中的double值精确到小数点后两位。可以四舍五入,也可以直接截断。
比如:输入12345.6789,输出可以是12345.68也可以是12345.67。至于是否需要四舍五入,可以通过参数来决定(RoundingMode.UP/RoundingMode.DOWN等参数)。
2. 实现代码
package com.clzhang.sample; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat; public class DoubleTest { /**
* 保留两位小数,四舍五入的一个老土的方法
* @param d
* @return
*/
public static double formatDouble1(double d) {
return (double)Math.round(d*100)/100;
} /**
* The BigDecimal class provides operations for arithmetic, scale manipulation, rounding, comparison, hashing, and format conversion.
* @param d
* @return
*/
public static double formatDouble2(double d) {
// 旧方法,已经不再推荐使用
// BigDecimal bg = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP); // 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN 注意:从0开始四舍五入 例如:123.002 结果:123.01
BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.HALF_UP); 注意:从5开始四舍五入 例如:123.002 结果:123.00
return bg.doubleValue();
} /**
* NumberFormat is the abstract base class for all number formats.
* This class provides the interface for formatting and parsing numbers.
* @param d
* @return
*/
public static String formatDouble3(double d) {
NumberFormat nf = NumberFormat.getNumberInstance(); // 保留两位小数
nf.setMaximumFractionDigits(2); // 如果不需要四舍五入,可以使用RoundingMode.DOWN
nf.setRoundingMode(RoundingMode.UP); return nf.format(d);
} /**
* 这个方法挺简单的。
* DecimalFormat is a concrete subclass of NumberFormat that formats decimal numbers.
* @param d
* @return
*/
public static String formatDouble4(double d) {
DecimalFormat df = new DecimalFormat("#.00"); return df.format(d);
} /**
* 如果只是用于程序中的格式化数值然后输出,那么这个方法还是挺方便的。
* 应该是这样使用:System.out.println(String.format("%.2f", d));
* @param d
* @return
*/
public static String formatDouble5(double d) {
return String.format("%.2f", d);
} public static void main(String[] args) {
double d = 12345.67890; System.out.println(formatDouble1(d));
System.out.println(formatDouble2(d));
System.out.println(formatDouble3(d));
System.out.println(formatDouble4(d));
System.out.println(formatDouble5(d));
} }
3. 输出
12345.68
12345.68
12,345.68
12345.68
12345.68
---------------------
本文来自 小兵qwer 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xiaobing_122613/article/details/71077225?utm_source=copy
最新文章
- Atitit  深入理解命名空间namespace  java c# php js
- java之OOP
- Oracle数据分页,并传出数据集
- 常州培训 day2 解题报告
- ASP.NET MVC 应用提速的十种方法
- Image.FrameDimensionsList 属性备注
- jquery.validate.js使用id验证控件
- 安卓Android控件ListView获取item中EditText值
- ANDROID_MARS学习笔记_S01原始版_017_绑定SERVICE
- 发测试邮件或垃圾邮件node脚本
- QML的渲染方式相较于之前的版本也有了重大的更新(CPU线程负责绘制,GPU线程负责渲染),还有好多经常评论 good
- CF 313 DIV2 B 树状数组
- Entity Framework+SQLite+DataBaseFirst
- backupMysql.sh
- 论Java访问权限控制的重要性
- 使用Filter过滤器+重写Request完美解决乱码问题
- js的this到底是什么意思
- 093实战 Nginx日志切割,以及脚本上传nginx的切割日志
- JDBC(5)—DatabaseMetaData
- HttpPost请求将json作为请求体传入的简单处理方法
热门文章
- jquery.pagination.js使用
- C++面向对象类的实例题目六
- Win 7系统优化/设置小工具 (脚本)
- pecl的使用
- g2o20160430下的csparse文件夹内的CMakeLists.txt
- 算法Sedgewick第四版-第1章基础-025-用队列实现unix下的Directory命令
- 第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
- Node.js 介绍及学习
- 5.内网渗透之PTH&;PTT&;PTK
- cs231n knn