2016-05-25 12 views
1

私は何の問題があるか説明するために修正された計算の一部を持っています。私は、動作中のJavaコードをC#アプリケーションに変換しています。c# - 無限の値を出力する

二重変数は、以下の計算を行って宣言され、次の入力値は、例えば、一緒に渡される:無限大と

double input1 = 45 
double input2 = 42 
double input3 = 1 

double a = (input1 - input2 * Math.Pow(input3, 2.0))/(1 - Math.Pow(input3, 2.0)); 

この出力をC#でなく、Javaの値を示しています。無限大が出力されると、以下の他の計算が影響を受けます。

a、b、およびcは、個々のテキストボックスに出力され、それぞれが無限またはNaNとして表示されます。

Textbox1.Text = a.ToString("F") (Infinite) 
Textbox2.Text = b.ToString("F") (-Infinite) 
Textbox3.Text = c.ToString("F") (NaN) 

私は、これはIEEE標準規格によるものですが、それは計算や出力結果に影響を与えないように変数ではなく、無限を示すの値を示している方法は、実際にそこにあることを知っています2小数点以下のテキストボックスに入力しますか?

+3

"変数aは、"無限大の代わりにどのような価値を期待していますか? – Lithium

+1

"と表示されますが、Javaでは上記の計算にどのような値の出力がJavaで表示されますか? –

+2

明らかに、 '1 - Math.Pow(input3、2.0)'は '1^2 = 1'なので、0を返します。これは' NullDevisionException'を引き起こします。私はjavaがこれを無視し、あなたに価値を与えることを疑う。 – HimBromBeere

答えて

0

あなたのコードは、無限大の結果となる除算部分の値0を返しています。ここで真実ですが、コードに間違いはありません。あなたは計算をチェックする必要があります。

 double input1 = 45; 
     double input2 = 42; 
     double input3 = 1; 

     double a = (input1 - input2 * Math.Pow(input3, 2.0)) 
      /(1 - Math.Pow(input3, 2.0)); 

     Console.WriteLine((input1 - input2 * Math.Pow(input3, 2.0))); 
     Console.WriteLine((1 - Math.Pow(input3, 2.0))); 
     Console.WriteLine(a); 

コンソールの出力を確認してください。

+0

私はそれをもっと見てみると、実際に0で値をダイビングしていました。この問題は、0で除算されることを期待していたので初めてでした。当時。計算の問題は、1がinput3に渡されたときにのみ発生するように思われます。 – CyanideHavik

+0

はい、それはここの唯一のケースでした.... – sumngh

0

aを計算するために投稿したコードをJavaテストプログラムに貼り付け、最小限の変更を加えてコンパイル可能なJavaにしました。私は、最初の三つの宣言に;を加え、そしてMath.powMath.Powを変更:

public class Test { 
    public static void main(String[] args) { 
    double input1 = 45; 
    double input2 = 42; 
    double input3 = 1; 

    double a = (input1 - input2 * Math.pow(input3, 2.0)) 
     /(1 - Math.pow(input3, 2.0)); 
    System.out.println(a); 
    } 
} 

プログラム印刷、予想されるように、「無限」。

Javaプログラムが何か異なるものになっている場合、C#に変換する方法にいくつかのエラーがあります。

関連する問題