2017-02-10 6 views
1

oracleデータベースでは、タイプNUMBER(6,4)のフィールドがあります。 データベースのデフォルトでは、値は0(または0.0000?)に設定されています。Java:oracleフィールド型NUMBER(6,4)の値が0と等しいかどうかをチェックします。

Javaクラスでは、この値が0かどうかを確認する必要があります。

double feePercent = clientCardMemberGroup.getFeePerc(); 
if (feePercent != 0) { 
... 
} 

これを行うには、正しい方法ではありません: は現在、私はこれを持っています。 BigDecimalを使って、データベースからの値が0(または0.0または0.00または0.000または0.0000)であるかどうかを調べる方法を知りたいと思います。ありがとう!

答えて

1

あなたは、DBからデータを取得するためのResultSet.getBigDecimalを使用するのBigDecimalを使用する必要がある場合。値を比較するには、BigDecimal.compareTo()メソッドを使用する必要があります。 public int compareTo(BigDecimal val)は、BigDecimalがvalより小さい場合は-1を返し、BigDecimalがvalより大きい場合は1を返し、BigDecimalがvalと等しい場合は0を返します。 ゼロと比較するには、定数BigDecimal.ZEROを使用できます。だからあなたの場合

BigDecimal feePercent = clientCardMemberGroup.getFeePerc(); 
if (feePercent.compareTo(BigDecimal.ZERO) != 0) { 
... 
} 
+0

素晴らしいソリューションのように見えます! 0,12345の値も正しく返しますか? –

+1

はい。何故なの。大きな精度で多数の乗算、除算などの操作をしない場合は、プリミティブを使用すればNumber(6,4) – Jgrammer

+1

は実際にこのパーセント値が正確な料金を決定するために使用されます。 F.e.feeが3、パーセント値が0,1234なので、手数料は0,00369のようになります。 BigDecimalはこれにぴったりでしょうか? –

関連する問題