欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Java基础] 如何保留两位小数

程序员文章站 2022-05-03 12:53:27
...

前言

前段时间在处理float类型的数据的时候,发现在float/double类型的数据输出时,总会遇到这样的问题.
例如: 1.000000000005.
问题: 1. 位数过多,看起来比较难受; 2. 最后的尾数有偏移.
解决办法: 将尾数四舍五入;将位数进行截断.


正文

如何保留2位小数字?

  • 使用BigDecimal的setScale()方法;
  • 使用System.out.println("%2f",a);
  • 使用NumberFormatsetMaximumFractionDigits(2)的方法
  • 使用DecimalFormatformat方法
   import java.math.BigDecimal;
   import java.text.DecimalFormat;
   import java.text.NumberFormat;
   public class Format {
        double f = 111231.5585;
        public void m1() {
            BigDecimal bg = new BigDecimal(f);
            double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            System.out.println(f1);
        }
        /**
         * DecimalFormat转换最简便
         */
        public void m2() {
            DecimalFormat df = new DecimalFormat("#.00");
            System.out.println(df.format(f));
        }
        /**
         * String.format打印最简便
         */
        public void m3() {
            System.out.println(String.format("%.2f", f));
        }
        public void m4() {
            NumberFormat nf = NumberFormat.getNumberInstance();
            nf.setMaximumFractionDigits(2);
            System.out.println(nf.format(f));
        }
        public static void main(String[] args) {
            format f = new format();
            f.m1();
            f.m2();
            f.m3();
            f.m4();
        }
    }

Reference

[1]. java double类型保留两位小数4种方法
[2]. Java中Double保留后小数位的几种方法

相关标签: Java基础知识