精华内容
下载资源
问答
  • 下面小编就为大家带来一篇java 四舍五入保留小数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了Java四舍五入时保留指定小数位数的种方式,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
  • // 方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();...new java.text.DecimalFormat("#.00").format(3.1415926); ...

    // 方式一:

    double f = 3.1516;

    BigDecimal b = new BigDecimal(f);

    double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

     

    // 方式二:

    new java.text.DecimalFormat("#.00").format(3.1415926);

    // #.00 表示两位小数 #.0000四位小数 以此类推…

     

    // 方式三:

    double d = 3.1415926;

    String result = String.format("%.2f", d);

    // %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。

     

    //方法四:

    Math.round(5.2644555 * 100) * 0.01d;

    //String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0

    展开全文
  • Java四舍五入保留小数

    2020-10-09 16:53:19
    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); ...
    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();
        }
    }
    

    结果:
    111231.56
    111231.56
    111231.56
    111,231.56

    转自: http://blog.csdn.net/ming1683/article/details/3195058

    展开全文
  • java 四舍五入保留小数的几种方式

    千次阅读 2018-11-22 10:37:19
    bigD.setScale(1)表示保留一位小数,默认用四舍五入方式 bigD.setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 bigD.setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 bigD....
    引用处:
    https://blog.csdn.net/u014704879/article/details/41479399/
    https://blog.csdn.net/shruber/article/details/78413706
    https://www.cnblogs.com/Dhouse/p/7776780.html
    
    方式一:BigDecimal
    double tpD = 6.15365;
    BigDecimal bigD = new BigDecimal(tpD);
    double tpD2 = bigD .setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    
    结果:6.15

    解释说明:

    (new BigDecimal()).setScale()方法用于格式化小数点,有多种小数保留模式,如下:

    BigDecimal bigD = new BigDecimal("3.14159");
    bigD.setScale(1)表示保留一位小数,默认用四舍五入方式 
    bigD.setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
    bigD.setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
    bigD.setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
    bigD.setScale(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
    
    对应的参数定义如下:
    ROUND_CEILING 
    Rounding mode to round towards positive infinity. 
    向正无穷方向舍入 
    
    ROUND_DOWN 
    Rounding mode to round towards zero. 
    向零方向舍入 
    
    ROUND_FLOOR 
    Rounding mode to round towards negative infinity. 
    向负无穷方向舍入 
    
    ROUND_HALF_DOWN 
    Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. 
    向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 
    
    ROUND_HALF_EVEN 
    Rounding mode to round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. 
    向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN 
    
    
    ROUND_HALF_UP 
    Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up. 
    向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 
    
    
    ROUND_UNNECESSARY 
    Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary. 
    计算结果是精确的,不需要舍入模式 
    
    
    ROUND_UP 
    Rounding mode to round away from zero. 
    向远离0的方向舍入
    

    PS:

    1,对于BigDecimal的初始化赋值的方式有一下几种,但是推荐用字符串初始化的方式

    1. BigDecimal num1 = new BigDecimal(6.285967);//这种写法不允许,会造成精度损失
    
    2. BigDecimal num2 = new BigDecimal(2);//这种写法是可以的
    
    3. BigDecimal num3 = new BigDecimal("6.285967");//一般都会这样写最好
    

    方式二:Math.round()

    Math.round(6.2634675 * 100) * 0.01d;
    
    结果:6.26

    解释说明:

    Math.round(x) 返回对参数x四舍五入后所得的整数近似值,通过如下例子做说明

    1、小数点后第一位=5
    正数:Math.round(11.5)=12
    负数:Math.round(-11.5)=-11
    
    2、小数点后第一位<5
    正数:Math.round(11.46)=11
    负数:Math.round(-11.46)=-11
    
    3、小数点后第一位>5
    正数:Math.round(11.68)=12
    负数:Math.round(-11.68)=-12
    
    根据上面例子的运行结果,我们还可以按照如下方式总结更加容易记忆:
    
    1、参数的小数点后第一位<5,运算结果为参数整数部分。
    2、参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正负)不变。
    3、参数的小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整数部分。
    
     
    
    总结:大于五全部加,等于五正数加,小于五全不加。
    
    Math.round 
    
      语法:
       Math.round(x);
      参数:
       x 为一数值。
      解释:
       方法。返回对参数x四舍五入后所得的整数近似值。
    
    
    round
    public static long round(double a)
    返回最接近参数的 long。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为long 类型。换句话说,结果等于以下表达式的值:
    (long)Math.floor(a + 0.5d)
    特殊情况如下:
    
    如果参数为 NaN,那么结果为 0。
    如果结果为负无穷大或任何小于等于 Long.MIN_VALUE 的值,那么结果等于Long.MIN_VALUE 的值。
    如果参数为正无穷大或任何大于等于 Long.MAX_VALUE 的值,那么结果等于Long.MAX_VALUE 的值。
    参数:
    a - 舍入为 long 的浮点值。
    返回:
    舍入为最接近的 long 值的参数值。
    round
    public static int round(float a)
    返回最接近参数的 int。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为int 类型。换句话说,结果等于以下表达式的值:
    (int)Math.floor(a + 0.5f)
    特殊情况如下:
    
    如果参数为 NaN,那么结果为 0。
    如果结果为负无穷大或任何小于等于 Integer.MIN_VALUE 的值,那么结果等于Integer.MIN_VALUE 的值。
    如果参数为正无穷大或任何大于等于 Integer.MAX_VALUE 的值,那么结果等于Integer.MAX_VALUE 的值。
    参数:
    a - 要舍入为整数的浮点值。
    返回:
    舍入为最接近的 int 值的参数值。
    ---------------------
    4.3<4.4<4.5  so  
    math.round(4.3)=4   
    math.round(4.4)=4   
    math.round(4.5)=5
    
    -4.6<-4.5 <-4.4 so 
    math.round(-4.6)=-5 
    math.round(-4.5)=-4
    math.round(-4.4)=-4
    
    -4.51   |-4.50   -4.49
    
    4.49  | 4.50  4.51
    
    
    因为是负数,所以临界点都是在5的左侧,文字上的“四舍五入”,让人容易糊涂
    
    
    
    四舍五入都是往右边计算:
    -----(-5)-----(-4.6)(-4.5)(-4.4)-----(-4)----------(0)----------(4)-----(4.4)(4.5)(4.6)-----(5)-----
    -----(-5)<---(-4.6)(-4.5)---------->(-4)----------(0)----------(4)<----------(4.5)(4.6)--->(5)-----
    -------------------------------(-4.4)--->(-4)---------(0)-----------(4)<---(4.4)----------------------------
    注意这些数字的位置关系,正数和负数并不是对称关系,Math.round()的运算时都是由左向右运算,所以:
    4.5四舍五入应该是取大值为5,-4.5也一样,取大值为-4,因为-4>-4.5>-5

    PS:

    1,这里说下Math.floor(),其返回值表示小于或等于指定数字的最大整数的数字,如下:

    Math.floor( 45.95); 
    // 45 
    Math.floor( 45.05); 
    // 45 
    Math.floor( 4 ); 
    // 4 
    Math.floor(-45.05); 
    // -46 
    Math.floor(-45.95); 
    // -46

    方式三:DecimalFormat

    new java.text.DecimalFormat("#.00").format(6.1435829);
    
    结果:6.14

    解释说明:

    DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。它可以支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)这些内容的本地化与区域化,如下例子说明:

         DecimalFormat df1 = new DecimalFormat("###,###.0000");//使用系统默认的格式
         System.out.println(df1.format(111111123456.12));
     
         结果:111,111,123,456.1200
            
         Locale.setDefault(Locale.US);//指定区域格式 ,这里使用美国的格式
         DecimalFormat df2= new DecimalFormat();
         System.out.println(df2.format(111111123456.1200));
    
         结果:111,111,123,456.12
     
         Locale.setDefault(Locale.FRANCE);//指定区域格式,法国
         DecimalFormat df2= new DecimalFormat("###,###.0000");//使用区域格式前提下自定义改造
         System.out.println(df2.format(111111123456.12));
        
         结果:111 111 123 456,1200
    
    //----------------------------also use applypattern------------------------------//
     
         DecimalFormat df3= new DecimalFormat();
         myformat3.applyPattern("##,###.000");
         System.out.println(df3.format(11112345.12363)); //这里有四舍五入
    
         结果:11,112,345.124
    //-----------------控制指数输出-------------------------------------------------//
     
          DecimalFormat df4= new DecimalFormat();
          myformat4.applyPattern("0.000E0000");
          System.out.println(df4.format(10000));
          System.out.println(df4.format(12345678.345)); //这里有四舍五入
    
          结果:   1.000E0004     1.235E0007
                  
    //------------------百分数的输出-------------------------------------------//
     
          DecimalFormat df5= null;
          try{
             df5= (DecimalFormat)NumberFormat.getPercentInstance();
         }catch(ClassCastException e){
            throw e;
         }
         df5.applyPattern("00.0000%");
         System.out.println(df5.format(0.34567));
         System.out.println(df5.format(1.34567));     
    
         结果:34.5670%    134.5670% 
    

    DecimalFormat 包含一组符号,对于各符号的含义解释如下:

    0 一个数字 
    # 一个数字,不包括 0 
    . 小数的分隔符的占位符 
    , 分组分隔符的占位符 
    ; 分隔格式。 
    - 缺省负数前缀。 
    % 乘以 100 和作为百分比显示 
    ? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代 替十进制分隔符。 
    X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

    PS:

    1,DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。
     

    方式四:String.format()

    /**
    * %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型
    /
    double tpD = 6.1435628;
    String result = String.format("%.2f", tpD );
    
    结果:6.14
    

    解释说明:

    详细看:JAVA字符串格式化-String.format()的使用

     

    展开全文
  • java四舍五入保留小数

    2018-02-26 10:04:26
    // 方式一:double f = 3.1516;BigDecimal b = new BigDecimal(f);double f1 = b.setScale(2, BigDecimal.... // 方式二:new java.text.DecimalFormat("#.00").format(3.1415926);// #.00 表示两位小数...
    // 方式一:
    double f = 3.1516;
    BigDecimal b = new BigDecimal(f);
    double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
     
    // 方式二:
    new java.text.DecimalFormat("#.00").format(3.1415926);
    // #.00 表示两位小数 #.0000四位小数 以此类推…
     
    // 方式三:
    double d = 3.1415926;
    String result = String.format("%.2f", d);
    // %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。
     
    //方法四:
    Math.round(5.2644555 * 100) * 0.01d;
    //String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0
    展开全文
  • Java实现若干个数计算平均值并保留小数java计算平均值 java四舍五入保留小数 一、需求 1、在项目中,要计算若干个指标的平均值,找了一圈,发现JDK中没有提供,于是乎,造一个。 2、因若干个指标不确定,...
  • 主要介绍了java四舍五入使java保留2位小数示例,大家参考使用
  • Java四舍五入保留指定位数的小数位作为一个使用非常频繁的技巧,值得记录总结下来。 // 方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f).setScale(2, BigDecimal.ROUND_HALF_UP); double f1 = b....
  • java代码-BigDecimal 四舍五入保留2位小数. 金额从单位分转成单位元
  • java后台四舍五入保留小数点

    千次阅读 2019-01-25 15:08:41
    之前一直用DecimalFormat来进行四舍五入保留小数点操作,后来发现还是有些问题。 然后就通过百度找方法,发现使用BigDecimal可能比较好些。不知道怎么说了,下面直接贴代码吧! /** * 数字字符串四舍五入保留...
  • (若想保留多位,只需将"%.2f"中的2改为想保留个数) System.out.println("----------第一种使用Printf打印---------------"); double a = 3.1456; System.out.printf("%.2f",a); 2、String.forma...
  • JavaJava四舍五入保留1位小数、2位小数...

    万次阅读 多人点赞 2018-10-17 08:37:01
    Java四舍五入保留1位小数的方法: import java.math.BigDecimal; public class Test { public static void main(String[] args) { double d1 = 3.02; System.out.println(d1); //利用字符串格式化的...
  • Java四舍五入保留小数位方法汇总

    千次阅读 2017-06-21 17:57:52
    在Android计算或显示中常会用到Java四舍五入保留1位或多位小数,之前只会用BigDecimal(可保证数值精度,也可用自主保留位数),自主选择吧,方法都很好,转自... // 方式一: double f = 3.1516;...
  • http://blog.csdn.net/chenssy/article/details/12719811 ...//方法: ..."方式:" ...方式:55.555600000000005 ...方式一:55.5555方式二:55.5554方式三:55.5555方式:55.5555
  • js 四舍五入函数 toFixed(),里面的参数 就是保留小数的位数。 代码如下:[removed] [removed](“<h1>JS保留两位小数例子</h1><br>”); var a=2.1512131231231321; [removed](“原来的值:”+a+” ”); ...
  • 计算个人所得税,需要四舍五入保留2位小数 csdn有很多篇文章讲述了四舍五入保留2位小数的多种方法,经过实测,下面这种方法最准确 通过对多个边缘值的测试,均无问题 public class MathUtil { private MathUtil() {...
  • java 四舍五入保留小数 // 方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); // 方式二: new java.text....
  • java四舍五入保留2位小数的小坑,附例子分享:java 1.8 RoundingMode.HALF_UP import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.NumberFormat; ...
  • float a = 123.2334f; float b = (float)(Math.round(a*100))/100;(这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000)
  • 这里以保留两位小数为例,每种方法用了三个测试数据,并给出对应结果。 import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; public class Demo { public static ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,211
精华内容 6,484
关键字:

java四舍五入保留小数

java 订阅