BigDecimalオブジェクトの使い方(及びBigDecimalをdoubleに変換)

3635 ワード

これらはネット上での盗作です。オリジナルではなく、自分で使うテストを受けてからでないと、信用できません。
1、JSPでBigDecimalがdoubleに変換されました。
Big Decimalをdoubleに変換
データベース内のフィールドのタイプはdecimal(数字、数字)で、JSPプログラムでdouble型に変換する方法は、(java.math.BigDecimal)row.get(データベース内のフィールド)。double Value()
注:rowはMapの対象です。row.get(「データベースのフィールド」)で得られたタイプはObjectで、まずデータベースタイプに対応するdecimalに変換してからdoubleに変換します。
2、BigDecimalの使い方の詳細
私が今行っているプロジェクトではこのタイプを使って金額を表します。しかし、このタイプは非常に正確で、データベースにデータを挿入すると6.00です。表示される時は6.00000000です。ページに表示されるのは非常に見苦しいです。インターネットで探しましたが、本当に解決方法を見つけました。みんなと共有して、後でシステムを作る時に使えます。それはdoubleとfloatだけでなく、ビジネス計算にもその役割を示すことができます。
java.math.Big Decimal。BigDecimalは全部で4つの製造方法があります。その中の二つの使い方を見てみます。
  • 第一種類:Big Decimal Translat a double into a Big Decimal.
  • 第二種類:Big Decimal Translast the String repre of a Big Decimal into a Big Decimal.
  • BigDecimalを使ってStringで十分に作ります。一つの加算をするには、まず二つの浮動小数点をStringに変えてからBigDecimalを作る必要があります。一つの上でaddメソッドを呼び出して、もう一つのパラメータとして入力して、演算の結果(BigDecimal)を浮動小数点に変換します。
    public static double add(double v 1,doublle v 2)public static double sub(double v 1,double v 2)public static double mull(double v 1,double v 2)public static doubleint scale)付録ソースファイルArth.java:import java.mart.Big Decimal;Javaの単純なタイプは浮動小数点を正確に計算できないので、このツール類は加減乗除と四捨五入を含む精確な浮動小数点演算を提供します。public class Arth{/デフォルト除法演算精度prvate static final int DEF_DIV_SCALE=10;/このクラスはprvate Arth(){}/****を実装できません。正確な足し算を提供します。*@param v 1被加数*@param v 2加数*@return 2つのパラメータの和*/public static double add(doublle v 1,double v 2){Big Decimal b 1=new BigDecimal(Duble.toString(v 1);;BigDecimal b 2=new BigDecimal(Double.toString(v 2);return b 1.add(b 2).doub leValue()/*。正確な減算を提供します。*@param v 1被減数*@param v 2減数*@return 2つのパラメータの差*/public static double sub(doublle v 1,double v 2){Big Decimal b 1=new BigDecimal(Double.toString(v 1));;BigDecimal b 2=new BigDecimal(Double.toString(v 2);return b 1.subtract(b 2).doub leValue()/*。正確な乗算を提供します。*@param v 1被乗数*@param v 2乗数*@return 2つのパラメータの積*/public static double mull(double v 1,double v 2){Big Decimal b 1=new BigDecimal(Double.toString(v 1));BigDecimal b 2=new BigDecimal(Double.toString(v 2);return b 1.multiplly(b 2).doub leValue()/*。正確な割り算を提供します。割り切れない状況が発生したら、*小数点以下10桁まで正確に計算します。その後の数字は四捨五入します。param v 1被除数*@param v 2除数*@return二つのパラメータの商*/public static double divDIV_SCALE);/***正確な除算演算を提供します。割り切れない状況が発生した場合は、scaleパラメータで*の精度を指し、以降の数字は四捨五入します。param v 1被除数*@param v 2除数*@param scaleは小数点以下の桁数まで正確にする必要があると表しています。return 2つのパラメータの商*/public static double div(double v 1,double v 2,int scale){if(scale<0){throw new IllaGalArgeException(The scale must be a positive integer)Big Decimal b 1=new BigDecimal(Double.toString(v 1);BigDecimal b 2=new BigDecimal(Double.toString(v 2);return b 1.divide(b 2,scale,Big Decimal.ROUND_HALF_UP).doubleValue()/***正確な小数位四捨五入処理を提供します。パラムvは四捨五入の数字*@param scale小数点後何桁かを保留します。@return四捨五入後の結果*/public static double round(double v、int scale){if(scale<0){throw IllagalArrage Exception}BigDecimal b=new BigDecimal(Double.toString(v);Big Decimal one=new BigDecimal(“1”);return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue()}
    3、DoubleはBigDecimalを強制的に回さないように注意してください。
    public class Test {
    	public static void main(String args[]) {
    		double b_OLD = 4.1625;
    		java.math.BigDecimal bd1 = new java.math.BigDecimal( b_OLD );
    		System.out.println("BEFORE ROUNDING: " + bd1);
    	}
    }
    
       double     BigDecimal 。
    問い詰める
        
            double  b = 4.44;
                  java.math.BigDecimal  big = (java.math.BigDecimal )b;
           ?       ?
    答えを出す
      double       ,          。         Object 。Double b = 4.44;        ,  BigDecimal   Double  ,            。