Java指定保留小数位数的方法

今天项目中需要更改时长的显示方式,规定必须保留两位小数,刚才看简书的时候正好看到一个指定保留小数位数的工具类的文章,在此基础上,做了一点小修改,用起来更加方便了,有需要的朋友尽管撸走

DecimalUtils 类:

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

/**
 * Created by Sean on 17/3/10.
 */

public class DecimalUtils {

  /**
   * 按四舍五入保留指定小数位数,位数不够用0补充
   * @param o 格式化前的小数
   * @param newScale 保留小数位数
   * @return 格式化后的小数
   */
  public static String formatDecimalWithZero(Object o, int newScale) {
    return String.format("%." + newScale + "f", o);
  }

  /**
   * 按四舍五入保留指定小数位数,位数不够用0补充
   * @param d 格式化前的小数
   * @param newScale 保留小数位数
   * @return 格式化后的小数
   */
  public static String formatDecimalWithZero(double d, int newScale) {
    String pattern = "0.";
    for (int i = 0; i < newScale; i++) {
      pattern += "0";
    }
    DecimalFormat df = new DecimalFormat(pattern);
    return df.format(d);
  }

  /**
   * 按四舍五入保留指定小数位数,位数不够用0补充
   * @param d 格式化前的小数 String形式
   * @param newScale 保留小数位数
   * @return 格式化后的小数
   */
  public static String formatDecimalWithZero(String d, int newScale) {
    String pattern = "0.";
    for (int i = 0; i < newScale; i++) {
      pattern += "0";
    }
    DecimalFormat df = new DecimalFormat(pattern);
    return df.format(Double.valueOf(d));
  }

  /**
   * 按四舍五入保留指定小数位数,小数点后仅保留有效位数
   * @param d 格式化前的小数
   * @param newScale 保留小数位数
   * @return 格式化后的小数
   */
  public static String formatDecimal(double d, int newScale) {
    String pattern = "#.";
    for (int i = 0; i < newScale; i++) {
      pattern += "#";
    }
    DecimalFormat df = new DecimalFormat(pattern);
    return df.format(d);
  }

  /**
   * 按四舍五入保留指定小数位数,小数点后仅保留有效位数
   * @param d 格式化前的小数
   * @param newScale 保留小数位数
   * @return 格式化后的小数
   */
  public static String formatDecimal(String d, int newScale) {
    String pattern = "#.";
    for (int i = 0; i < newScale; i++) {
      pattern += "#";
    }
    DecimalFormat df = new DecimalFormat(pattern);
    return df.format(Double.valueOf(d));
  }

  /**
   * 按指定舍入模式保留指定小数位数
   * @param d 格式化前的小数
   * @param newScale 保留小数位数
   * @param roundingMode 舍入模式
   *    (RoundingMode.UP始终进一/DOWN直接舍弃/
   *     CEILING正进负舍/FLOOR正舍负进/
   *     HALF_UP四舍五入/HALF_DOWN五舍六进/
   *     HALF_EVEN银行家舍入法/UNNECESSARY抛出异常)
   * @return 格式化后的小数
   */
  public static double formatDecimal(double d, int newScale, RoundingMode roundingMode) {
    BigDecimal bd = new BigDecimal(d).setScale(newScale, roundingMode);
    return bd.doubleValue();
  }

  /**
   * 按指定舍入模式保留指定小数位数
   * @param d 格式化前的小数
   * @param newScale 保留小数位数
   * @param roundingMode 舍入模式
   *    (RoundingMode.UP始终进一/DOWN直接舍弃/
   *     CEILING正进负舍/FLOOR正舍负进/
   *     HALF_UP四舍五入/HALF_DOWN五舍六进/
   *     HALF_EVEN银行家舍入法/UNNECESSARY抛出异常)
   * @return 格式化后的小数
   */
  public static double formatDecimal(String d, int newScale, RoundingMode roundingMode) {
    BigDecimal bd = new BigDecimal(Double.valueOf(d)).setScale(newScale, roundingMode);
    return bd.doubleValue();
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java 保留两位小数的几种方法

    1.代码: 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)

  • 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); // #.00 表示两位小数 #.0000四位小数 以此类推- // 方式三: double d = 3.1

  • java保留小数的四种实现方法

    本文实例针对java保留两位小数问题为大家进行解答,供大家参考,具体内容如下 方式一: 四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 方式一这个类很好的解决了方式三所带来的问题. 保留两位小数 方式二: DecimalFormat df =new DecimalFormat("#.00

  • Java保留两位小数的几种写法总结

    本文列举了几个方法: 1. 使用java.math.BigDecimal 2. 使用java.text.DecimalFormat 3. 使用java.text.NumberFormat 4. 使用java.util.Formatter 5. 使用String.format 文章末尾给大家分享了更多的拓展知识,另外可以自己实现或者借用封装好的类库来实现,在这篇文章中就不一一列举了. 下面来看看详细的介绍. 一.使用BigDecimal,保留小数点后两位 public static String

  • java使double保留两位小数的多方法 java保留两位小数

    复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00"); double d1 = 3.23456  double d2 = 0.0;double d3 = 2.0;df.format(d1); df.format(d2); df.format(d3); 3个结果分别为: 复制代码 代码如下: 3.230.00 2.00 java保留两位小数问题:

  • java 四舍五入使java保留2位小数示例讲解

    复制代码 代码如下: /* * 测试四舍五入 */package com.icer.test; /** * * @author Hanbin */public class MyRound {    public static void main(String[] args) {        double num = 3.23562;        double number = 0;        number = new MyRound().myRound(num,2);        Sy

  • 使用java代码实现保留小数点的位数

    复制代码 代码如下: import java.text.* ; import java.math.* ; public class Test{  public Test(){ double a=saveNumber(15.12312312,6); System.out.println("a....."+a); } //保留小数点的位数 //number为要处理的数,digit为要保留的位数 public double  saveNumber(double number,int digi

  • Java指定保留小数位数的方法

    今天项目中需要更改时长的显示方式,规定必须保留两位小数,刚才看简书的时候正好看到一个指定保留小数位数的工具类的文章,在此基础上,做了一点小修改,用起来更加方便了,有需要的朋友尽管撸走 DecimalUtils 类: import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; /** * Created by Sean on 17/3/10. */ public class

  • .net decimal保留指定的小数位数(不四舍五入)

    前言 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保留指定位数小数的方法. 扩展方法的使用,使得调用起来很优雅. 示例代码 public static class DecimalExtension { /// <summary> /// decimal保留指定位数小数 /// </summary> /// <param name="num">原始数量</param&

  • C# double和decimal数据类型以截断的方式保留指定的小数位数

    项目中要用到以截断的方式取小数点后两位,故写了以下方法: 复制代码 代码如下: /// <summary> /// 将小数值按指定的小数位数截断 /// </summary> /// <param name="d">要截断的小数</param> /// <param name="s">小数位数,s大于等于0,小于等于28</param> /// <returns></retur

  • Java实现控制小数精度的方法

    生成double类型随机数 random()函数源码 /** * Creates a new random number generator. This constructor sets * the seed of the random number generator to a value very likely * to be distinct from any other invocation of this constructor. */ public Random() { this(s

  • Java中保留两位小数的四种方法实现实例

    在写程序的时候,有时候可能需要设置小数的位数,那么java中有哪几种保留小数位数的方法呢?本文以两位小数为例给出四种方法. package CodeJava_Leet; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; /** * Created by Yechengpeng on 2016-08-14. */ public class Test { public

  • psql除法保留小数,实现向上取整和向下取整操作

    在psql中,使用1/4得到的结果是0,因为/它取得是整数,但是有些场景我们是需要保留小数的,还有些场景需要向上取整,或者四舍五入的. 今天就总结下psql保留小数的方法 我用到的方法是类型转换,类似于c中int/int为int类型,而float/int则为float. select round(1::numeric/4::numeric,2) 将除数被除数转换为numeric类型,保留两位小数,此时可以得到 0.25 最近的使用中我是用的是cast转换,如下: MAX(ceil(round(

  • C# 小数位数保留的方法集锦

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); provider.NumberDecimalDigits =intDecLength; //要设定的小数位数 double strCashAmt=Convert.ToDouble(this.txtCashAmt.Text); //先把控件內的值转成double this.txtCashAmt.Text =

  • Java四舍五入时保留指定小数位数的五种方式

    方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 输出结果f1为 3.15: 源码解读: public BigDecimal setScale(int newScale, int roundingMode) //int newScale 为小数点后保留的位数, int roundingMode 为变

  • Java保留两位小数的实现方法

     Java保留两位小数的实现方法 采用四舍五入的方式 : 该方式来自网络 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.setSca

随机推荐