Java保留两位小数的多种方法

摘要

本文介绍了Java格式化double类型数值,使保留两位小数的多种方法。各种方法各有特点,如无特殊需要,建议使用BigDecimal,使用double处理精度的都被开除了!

方法一

此方法返回精度为四舍五入,返回String类型

#.## 格式化后如果小数部分末尾有0,则去除末尾的0文章源自新逸网络-https://www.xinac.net/8866.html

#0.00 格式化后,保留2位小数文章源自新逸网络-https://www.xinac.net/8866.html

DecimalFormat df = new DecimalFormat("#0.00");

double d11 = 3.14159;
System.out.println(df.format(d11));
System.out.println("-----------");

double d12 = 3.456;
System.out.println(df.format(d12));
System.out.println("-----------");

double d21 = 1.956;
System.out.println(df.format(d21));
System.out.println("-----------");

double d22 = 1.901;
System.out.println(df.format(d22));
System.out.println("-----------");

double d31 = 2.0;
System.out.println(df.format(d31));
System.out.println("-----------");
3.14
-----------
3.46
-----------
1.96
-----------
1.90
-----------
2.00
-----------

方法二

此方法为四舍五入,可返回Double类型文章源自新逸网络-https://www.xinac.net/8866.html

BigDecimal decimal1 = new BigDecimal("10.124");
double d1 = decimal1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);
System.out.println("-----------");

BigDecimal decimal2 = new BigDecimal("10.345");
double d2 = decimal2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d2);
System.out.println("-----------");
10.12
-----------
10.35
-----------

方法三

此方法返回精度为四舍五入,返回String类型文章源自新逸网络-https://www.xinac.net/8866.html

%.2f:%. 表示小数点前任意位数;2 表示两位小数;格式后的结果为f,表示浮点型文章源自新逸网络-https://www.xinac.net/8866.html

double d1 = 3.141;
String s1 = String.format("%.2f", d1);
System.out.println(s1);
System.out.println("-----------");

double d2 = 3.345;
String s2 = String.format("%.2f", d2);
System.out.println(s2);
System.out.println("-----------");
3.14
-----------
3.35
-----------

方法四

此方法返回精度为四舍五入,返回String类型文章源自新逸网络-https://www.xinac.net/8866.html

NumberFormat format = NumberFormat.getNumberInstance();
// 参数digits是位数,最后位四舍五入
format.setMaximumFractionDigits(2);

System.out.println(format.format(3.141));
System.out.println("-----------");

System.out.println(format.format(3.345));
System.out.println("-----------");
3.14
-----------
3.35
-----------

 文章源自新逸网络-https://www.xinac.net/8866.html

各种方法各有特点,如无特殊需要,建议使用BigDecimal,使用double处理精度的都被开除了!文章源自新逸网络-https://www.xinac.net/8866.html

 文章源自新逸网络-https://www.xinac.net/8866.html


 文章源自新逸网络-https://www.xinac.net/8866.html 文章源自新逸网络-https://www.xinac.net/8866.html

weinxin
新逸IT技术
扫一扫关注微信公众号
Admin
  • 本文由 发表于 2020-07-31
  • 转载请注明:https://www.xinac.net/8866.html
评论  0  访客  0
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定