ヘッダーとトレーラー レコードを除く各詳細レコードに金額フィールドと数量フィールドが存在する csv ファイルがあります。トレーラ レコードには、詳細レコードの金額フィールドを乗じた数量の合計である合計料金値があります。トレーラーの合計料金の値が、金額フィールドと数量フィールドの計算値と等しいかどうかを確認する必要があります。これらすべての計算に double データ型を使用しています。私が閲覧したとき、以下のWebリンクから、小数点との比較中に二重データ型を使用すると問題が発生する可能性があることを理解できます。BigDecimal を使用することを提案しています
http://epramono.blogspot.com/2005/01/double-vs-bigdecimal.html
double データ型を使用すると問題が発生しますか? BigDecimal を使用して計算を行うにはどうすればよいですか。また、csvファイルの小数点以下の桁数がわかりません。また、金額には正または負の値を指定できます。
csvファイルで
H,ABC..... "D",....,"1","12.23" "D",.....,"3","-13.334" "D",.... ..、"2"、"12" T、csd、123、12.345
------------------------------ 検証中、私は以下のコードを持っています ------------ --------
double detChargeCount =0;
//From csv file i am reading trailer records charge value
String totChargeValue = items[3].replaceAll("\"","").trim();
if (null != totChargeValue && !totChargeValue.equals("")) {
detChargeCount = new Double(totChargeValue).doubleValue();
if(detChargeCount==calChargeCount)
validflag=true;
-------------------------------------- CSV ファイルの読み取り中に、以下のコードが表示されます
if (null != chargeQuan && !chargeQuan.equals("")) {
tmpChargeQuan=Long(chargeQuan).longValue();
}
if (null != chargeAmount && !chargeAmount.equals("")) {
tmpChargeAmt=new Double(chargeAmount).doubleValue();
calChargeCount=calChargeCount+(tmpChargeQuan*tmpChargeAmt);
}
I had declared the variables tmpChargeQuan, tmpChargeAmt, calChargeCount as double