程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java 保存兩位小數的幾種辦法

java 保存兩位小數的幾種辦法

編輯:關於JAVA

java 保存兩位小數的幾種辦法。本站提示廣大學習愛好者:(java 保存兩位小數的幾種辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是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).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();
 }
}

2.輸入成果:

111231.56
111231.56
111231.56
111,231.56

這裡我們供給了一個對象類,界說浮點數的加、減、乘、除和四捨五入等運算辦法。以供參考。

源文件MathExtend.java:


import java.math.BigDecimal;

public class MathExtend

{

 //默許除法運算精度

 private static final int DEFAULT_DIV_SCALE = 10;

 

 /**

 * 供給准確的加法運算。

 * @param v1

 * @param v2

 * @return 兩個參數的和

 */

 public static double add(double v1, double v2)

 {

   BigDecimal b1 = new BigDecimal(Double.toString(v1));

   BigDecimal b2 = new BigDecimal(Double.toString(v2));

   return b1.add(b2).doubleValue();

 }

 /**

  * 供給准確的加法運算

  * @param v1 

  * @param v2

  * @return 兩個參數數學加和,以字符串格局前往

  */

 public static String add(String v1, String v2)

 {

   BigDecimal b1 = new BigDecimal(v1);

   BigDecimal b2 = new BigDecimal(v2);

   return b1.add(b2).toString();

 }

 

 /**

 * 供給准確的減法運算。

 * @param v1

 * @param v2

 * @return 兩個參數的差

 */

 public static double subtract(double v1, double v2)

 {

   BigDecimal b1 = new BigDecimal(Double.toString(v1));

   BigDecimal b2 = new BigDecimal(Double.toString(v2));

   return b1.subtract(b2).doubleValue();

 }

 

 /**

  * 供給准確的減法運算

  * @param v1

  * @param v2

  * @return 兩個參數數學差,以字符串格局前往

  */

 public static String subtract(String v1, String v2)

 {

   BigDecimal b1 = new BigDecimal(v1);

   BigDecimal b2 = new BigDecimal(v2);

   return b1.subtract(b2).toString();

 }

 

 

 /**

 * 供給准確的乘法運算。

 * @param v1

 * @param v2

 * @return 兩個參數的積

 */

 public static double multiply(double v1, double v2)

 {

   BigDecimal b1 = new BigDecimal(Double.toString(v1));

   BigDecimal b2 = new BigDecimal(Double.toString(v2));

   return b1.multiply(b2).doubleValue();

 }

 

 /**

  * 供給准確的乘法運算

  * @param v1

  * @param v2

  * @return 兩個參數的數學積,以字符串格局前往

  */

 public static String multiply(String v1, String v2)

 {

   BigDecimal b1 = new BigDecimal(v1);

   BigDecimal b2 = new BigDecimal(v2);

   return b1.multiply(b2).toString();

 }

 

 /**

 * 供給(絕對)准確的除法運算,當產生除不盡的情形時,准確到

 * 小數點今後10位,今後的數字四捨五入,捨入形式采取ROUND_HALF_EVEN

 * @param v1

 * @param v2

 * @return 兩個參數的商

 */

 public static double divide(double v1, double v2)

 {

   return divide(v1, v2, DEFAULT_DIV_SCALE);

 }

 

 /**

  * 供給(絕對)准確的除法運算。當產生除不盡的情形時,由scale參數指

  * 定精度,今後的數字四捨五入。捨入形式采取ROUND_HALF_EVEN

  * @param v1

  * @param v2

  * @param scale 表現須要准確到小數點今後幾位。

  * @return 兩個參數的商

  */

 public static double divide(double v1,double v2, int scale)

 {

   return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);

 }

 

 /**

  * 供給(絕對)准確的除法運算。當產生除不盡的情形時,由scale參數指

  * 定精度,今後的數字四捨五入。捨入形式采取用戶指定捨入形式

  * @param v1

  * @param v2

  * @param scale 表現須要准確到小數點今後幾位

  * @param round_mode 表現用戶指定的捨入形式

  * @return 兩個參數的商

  */

 public static double divide(double v1,double v2,int scale, int round_mode){

     if(scale < 0)

     {

       throw new IllegalArgumentException("The scale must be a positive integer or zero");

     }

     BigDecimal b1 = new BigDecimal(Double.toString(v1));

     BigDecimal b2 = new BigDecimal(Double.toString(v2));

     return b1.divide(b2, scale, round_mode).doubleValue();

 }

 

 /**

  * 供給(絕對)准確的除法運算,當產生除不盡的情形時,准確到

  * 小數點今後10位,今後的數字四捨五入,捨入形式采取ROUND_HALF_EVEN

  * @param v1

  * @param v2

  * @return 兩個參數的商,以字符串格局前往

  */

 public static String divide(String v1, String v2)

 {

   return divide(v1, v2, DEFAULT_DIV_SCALE);

 }

 

 /**

  * 供給(絕對)准確的除法運算。當產生除不盡的情形時,由scale參數指

  * 定精度,今後的數字四捨五入。捨入形式采取ROUND_HALF_EVEN

  * @param v1

  * @param v2

  * @param scale 表現須要准確到小數點今後幾位

  * @return 兩個參數的商,以字符串格局前往

  */

 public static String divide(String v1, String v2, int scale)

 {

   return divide(v1, v2, DEFAULT_DIV_SCALE, BigDecimal.ROUND_HALF_EVEN);

 }

 

 /**

  * 供給(絕對)准確的除法運算。當產生除不盡的情形時,由scale參數指

  * 定精度,今後的數字四捨五入。捨入形式采取用戶指定捨入形式

  * @param v1

  * @param v2

  * @param scale 表現須要准確到小數點今後幾位

  * @param round_mode 表現用戶指定的捨入形式

  * @return 兩個參數的商,以字符串格局前往

  */

 public static String divide(String v1, String v2, int scale, int round_mode)

 {

   if(scale < 0)

   {

     throw new IllegalArgumentException("The scale must be a positive integer or zero");

   }

   BigDecimal b1 = new BigDecimal(v1);

   BigDecimal b2 = new BigDecimal(v2);

   return b1.divide(b2, scale, round_mode).toString();

 }

 

 /**

  * 供給准確的小數位四捨五入處置,捨入形式采取ROUND_HALF_EVEN

  * @param v 須要四捨五入的數字

  * @param scale 小數點後保存幾位

  * @return 四捨五入後的成果

  */

 public static double round(double v,int scale)

 {

   return round(v, scale, BigDecimal.ROUND_HALF_EVEN);

 }

 /**

  * 供給准確的小數位四捨五入處置

  * @param v 須要四捨五入的數字

  * @param scale 小數點後保存幾位

  * @param round_mode 指定的捨入形式

  * @return 四捨五入後的成果

  */

 public static double round(double v, int scale, int round_mode)

 {

   if(scale<0)

   {

     throw new IllegalArgumentException("The scale must be a positive integer or zero");

   }

   BigDecimal b = new BigDecimal(Double.toString(v));

   return b.setScale(scale, round_mode).doubleValue();

 }

 

 /**

  * 供給准確的小數位四捨五入處置,捨入形式采取ROUND_HALF_EVEN

  * @param v 須要四捨五入的數字

  * @param scale 小數點後保存幾位

  * @return 四捨五入後的成果,以字符串格局前往

  */

 public static String round(String v, int scale)

 {

  return round(v, scale, BigDecimal.ROUND_HALF_EVEN);

 }

 /**

  * 供給准確的小數位四捨五入處置

  * @param v 須要四捨五入的數字

  * @param scale 小數點後保存幾位

  * @param round_mode 指定的捨入形式

  * @return 四捨五入後的成果,以字符串格局前往

  */

 public static String round(String v, int scale, int round_mode)

 {

   if(scale<0)

   {

     throw new IllegalArgumentException("The scale must be a positive integer or zero");

   }

   BigDecimal b = new BigDecimal(v);

   return b.setScale(scale, round_mode).toString();

 }

}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved