次のコードは、true を返す場合と返さない場合があります。
さまざまな結果を引き起こしている可能性のあるものは何ですか?
0.00 文字列は JSON オブジェクトから取得されます。
(コード簡略化)
if(new Float("0.00")>0){
// do something
}
編集:
私が持っているのは、ゼロ、ゼロ未満、またはゼロより大きいかどうかを判断したいいくつかのフロートです。値は、0.00、0.001、または -0.001 のようなものです。それらが正、負、またはゼロかどうかを判断するにはどうすればよいですか?
編集:
おそらく、値を取得する方法を明確にする必要があります。BigDecimal について読んで、それを無駄に使用しようとしたため、問題を引き起こしているのはまったく別の何かである可能性があります。
値は、次のコードを使用して JSON フィード (LT:0.000 の形式) から抽出されます。
price = new BigDecimal(stocksJSONArray.getJSONObject(i).getString("LT"));
次に、価格がゼロより大きいか小さいかをテストするために、次の条件ステートメントを使用しました。
if(price.compareTo(BigDecimal.ZERO)==1){
// greater than zero
}
else if(price.compareTo(BigDecimal.ZERO)==-1){
// less than zero
}
このコードは、JSON フィードから読み出された多くの値に対してループされます。結果から、ゼロの一部price
はゼロより大きいものとして処理され、一部はゼロ未満として処理されます。他の何かがここで問題を引き起こしているのではないかと疑っていますか?
また、データの精度に問題があるかどうかを確認するテストも行いました。だから私はこれをしました:
DecimalFormat frmt = new DecimalFormat("0.000000000000000000000000");
String formatted = frmt.format(stock.change);
そして、正と負として認識されたゼロの場合、そのトレース値はまだ0.000000000000000000000000
、0.000000000000000000000001
またはそのようなものでした。