- 締切済み
NaNではなく、0と表示させたい
0を0で割った時に, NaNと表示されるのではなく、 0と表示させたいのですが、 どうしたらよいですが?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ssr-y6
- ベストアンサー率71% (5/7)
計算前の値を検査して結果を制御するか、結果に応じてその結果を修正することになると思います。 以下がその例です。 public class zero { public static void main(String args[]) { double a, b, c; try { if (args.length < 2) return; a = Double.parseDouble(args[0]); b = Double.parseDouble(args[1]); //通常の結果 c = a / b; System.out.println(c); //0を0で割ったとき結果を0にする c = ((a == 0.0) && (b == 0.0) ? 0.0 : a / b); System.out.println(c); //0を何か(NaNなど)で割ったとき(0を0で割ったときも)結果を0にする c = (a == 0.0 ? 0.0 : a / b); System.out.println(c); //結果がNaNの時に結果を0にする c = (Double.isNaN(a / b) ? 0.0 : a / b); System.out.println(c); } catch (Exception e) { System.out.println(e.toString()); }; }; }
- UKY
- ベストアンサー率50% (604/1207)
ん? 浮動小数点型ですよね? 整数型だと例外になりますから。 下の型とやってることは同じですが、 double a, b, c; c = ((a == 0.0) && (b == 0.0)) ? 0.0 : a / b;
ものすごく単純かもしれませんが int a; int b; int c; if(a==0 && b==0){ c=0; }else{ c=a/b; } では駄目でしょうか?