当前位置: 移动技术网 > IT编程>开发语言>Java > Java指定保留小数位数的方法

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

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

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();
  }

}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网