转载: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

最新文章

  1. Atitit  深入理解命名空间namespace  java c# php js
  2. java之OOP
  3. Oracle数据分页,并传出数据集
  4. 常州培训 day2 解题报告
  5. ASP.NET MVC 应用提速的十种方法
  6. Image.FrameDimensionsList 属性备注
  7. jquery.validate.js使用id验证控件
  8. 安卓Android控件ListView获取item中EditText值
  9. ANDROID_MARS学习笔记_S01原始版_017_绑定SERVICE
  10. 发测试邮件或垃圾邮件node脚本
  11. QML的渲染方式相较于之前的版本也有了重大的更新(CPU线程负责绘制,GPU线程负责渲染),还有好多经常评论 good
  12. CF 313 DIV2 B 树状数组
  13. Entity Framework+SQLite+DataBaseFirst
  14. backupMysql.sh
  15. 论Java访问权限控制的重要性
  16. 使用Filter过滤器+重写Request完美解决乱码问题
  17. js的this到底是什么意思
  18. 093实战 Nginx日志切割,以及脚本上传nginx的切割日志
  19. JDBC(5)—DatabaseMetaData
  20. HttpPost请求将json作为请求体传入的简单处理方法

热门文章

  1. jquery.pagination.js使用
  2. C++面向对象类的实例题目六
  3. Win 7系统优化/设置小工具 (脚本)
  4. pecl的使用
  5. g2o20160430下的csparse文件夹内的CMakeLists.txt
  6. 算法Sedgewick第四版-第1章基础-025-用队列实现unix下的Directory命令
  7. 第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍
  8. Node.js 介绍及学习
  9. 5.内网渗透之PTH&PTT&PTK
  10. cs231n knn