Java有关浮点数精度——指定精确小数位
Posted 有水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java有关浮点数精度——指定精确小数位相关的知识,希望对你有一定的参考价值。
一般有4种方法,下面进行简单总结。
1.BigDecimal.setScale(int newScale,RoundingMode roundingMode)
(1)语法
参数newScale:保留的小数位数
roundingMode:保留模式,包括
BigDecimal.ROUND_DOWN :直接删除
BigDecimal.ROUND_UP :进位
BigDecimal.ROUND_HALF_UP:四舍五入
BigDecimal.ROUND_HALF_DOWN:若舍弃部分>.5,则作ROUND_UP; 否则,作ROUND_DOWN。
更详尽的可参考此博:https://blog.csdn.net/alanzyy/article/details/8465098
(2)代码
BigDecimal a = new BigDecimal("3.14159265358979323").setScale(2,BigDecimal.ROUND_DOWN); System.out.println(a);//输出3.14 BigDecimal b = new BigDecimal("3.14159265358979323").setScale(2,BigDecimal.ROUND_UP); System.out.println(b);//输出3.15 BigDecimal c = new BigDecimal("3.14159265358979323").setScale(3,BigDecimal.ROUND_HALF_UP); System.out.println(c);//输出3.142 BigDecimal d = new BigDecimal("3.1415").setScale(3,BigDecimal.ROUND_HALF_DOWN); System.out.println(d);//输出3.141
2.String.format()
double num = 3.14159265358979323; System.out.println(String.format("%.2f", num));//输出3.14
3.DecimalFormat.format()
double num = 3.14159265358979323 DecimalFormat decimalFormat = new DecimalFormat("#.00"); System.out.println( decimalFormat.format(num));//输出3.14
4.NumberFormat.format()
1 double num = 3.14159265358979323; 2 NumberFormat numberFormat = NumberFormat.getNumberInstance(); numberFormat.setMaximumFractionDigits(2); 3 System.out.println( numberFormat.format(num));//输出3.14
以上是关于Java有关浮点数精度——指定精确小数位的主要内容,如果未能解决你的问题,请参考以下文章