保留小数点相关问题
一,保留两位小数常用的几种方法
1,使用 java.util.Formatter 类
1 2 3 4 5 6 | public static String format2( double value) { /* * %.2f % 表示 小数点前任意位数 2 表示两位小数 格式后的结果为 f 表示浮点型 */ return new Formatter().format( "%.2f" , value).toString(); } |
2,使用String的format方法
1 2 3 | public static String format2( double value) { return String.format( "%.2f" , value).toString(); } |
3,用DecimalFormat的format方法;
1 2 3 | double f = 111231.5585; DecimalFormat df = new DecimalFormat( "#.00" ); System. out .println(df.format(f)); |
说明:
.00:四舍五入保留两位小数。满足2时,整数位不显示
#.00:四舍五入保留两位小数。满足2时,整数位不显示
0.00:四舍五入保留两位小数。不够位数则补0
#.##:四舍五入保留两位小数。不够位数时不处理
%.2f:四舍五入保留两位小数。不够位数则补0
BigDecimal :四舍五入保留两位小数。不够位数时不处理
NumberFormat:四舍五入保留两位小数。不够位数时不处理
解释一下"0"和"#"的区别:
0:
数字少了,会补“0”,小数和整数都会补0;
数字多了,做切割,只切小数的末尾,不切整数位;
#:
数字少了,则不处理;
数字多了,做切割,只切小数的末尾,不切整数位;
例如:
有两类(四种)情况:
1.a>1
2. 0<a<1
3. 待转换的数据,其小数长度大于指定保留的位数(eg:a = 12.235534,保留2位)
4.待转换的数据,其小数长度小于指定保留的位数(eg:a = 12.2,保留2位)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | double a = 12.235534; //法1 四舍五入保留两位小数,可以增删小数点后0的个数来修改需要保留的小数个数 DecimalFormat decimalFormat = new DecimalFormat( ".00" ); System. out .println( ".00:" + decimalFormat.format(a)); //法2 四舍五入保留两位小数,可以增删小数点后0的个数来修改需要保留的小数个数 DecimalFormat decimalFormat2 = new DecimalFormat( "#.00" ); System. out .println( "#.00:" + decimalFormat2.format(a)); //法3 四舍五入保留两位小数,可以增删小数点后0的个数来修改需要保留的小数个数 DecimalFormat decimalFormat3 = new DecimalFormat( "0.00" ); System. out .println( "0.00:" + decimalFormat3.format(a)); //法4 四舍五入保留两位小数,可以增删小数点后#的个数来修改需要保留的小数个数 //note:如果只有1位小数,结果仅保留1位小数,后面不会补0 DecimalFormat decimalFormat4 = new DecimalFormat( "#.##" ); System. out .println( "#.##:" + decimalFormat4.format(a)); //法5 四舍五入保留两位小数,可以修改f前的数字修改需要保留的小数个数 System. out .println( "%.2f:" + String.format( "%.2f" , a)); //法6 四舍五入保留两位小数,可以修改setScale内的第一个参数数字修改需要保留的小数个数 //note:如果只有1位小数,结果仅保留1位小数,后面不会补0 BigDecimal b = new BigDecimal(a); double d = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System. out .println( "BigDecimal:" + d); //法7 四舍五入保留两位小数,可以修改setMaximumFractionDigits数字修改需要保留的小数个数 //note:如果只有1位小数,结果仅保留1位小数,后面不会补0 NumberFormat f = NumberFormat.getNumberInstance(); f.setMaximumFractionDigits(2); System. out .println( "NumberFormat:" + f.format(a)); |
1.假设已有待转换数据:double a = 12.235534 满足条件1、3
结果如下:
2.假设已有待转换数据:double a = 0.235534 满足条件2、3
同样执行上面7种方式,你就会发现不同
结果如下:
3.假设已有待转换数据:double a = 0.2 满足条件2、4
同样执行上面7种方式,你就会发现不同
结果如下:
4.假设已有待转换数据:double a = 12.2 满足条件1、4
同样执行上面7种方式,你就会发现不同
结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具