質問

の場合はご容赦このダム初心者の方に問題がないんですけっておきたいところです。

私は会員に宣言した変数のように:

public Double Value;

私が割り当て3.14159265額のみを計算するための正弦ので、このう:

system.out.println(Value.toString()); //outputs 3.14159265
Value = Math.sin(Value);
system.out.println(Value.toString()); //outputs NaN

このことを単一の値でした-でも0!Math.sin()のように常に生産NaNその結果にかかわらず、引数の値です。

のドキュメントと言う:

そうでない場合は、引数がNaNまたは無限大の場合、結果はNaN.

私の引数がないことが明らかNaNまたは無限大!

何を一体何が起こっているのか?

更新

がんのdumbestプログラマー。私のプロジェクト全体のコードはもちろん非常に複雑での例です。ある種の表情パーサ&評価者の定義数学的機能を使用してい切替条項は何かを考え,議論することで機能を呼 を忘れてしまった休みの場合 によsqrt機能を実行する負のパラメータとします。

しかし-dumbestプログラマー。

お引受けさせてもらいました最上位の答えとして最適ですぁ.久しぶりのために、時間をお-.-

役に立ちましたか?

解決

Double value = 3.14159265;
System.out.println(value.toString()); //outputs 3.14159265
value = Math.sin(value);
System.out.println(value.toString()); //outputs NaN

出力(予定):

3.14159265
3.5897930298416118E-9

なので問題はどこか他のバージョンのJDKます。では32ビットまたは64ビット?あるその他のコードの中るんだペーストとは何ですか?

の取得 NaN から Math.sin 利用があ inf o NaN としてのパラメータとします。とくに明示的に割り当てる値を得られまでのように誤った計算例:

Double d = 0.0/0.0;
System.out.println(Math.sin(d));
double d2 = Double.POSITIVE_INFINITY;
System.out.println(Math.sin(d2));

この出力は、このようになります: NaN ます。

二注

  • 使用しない本文のための変数の使用 value, ない Value)
  • 要な時に必要なstingsのパラメータとしては構成されているかその他の文字列)だけ明示的に呼び出す必要はあり toString(), ります。 System.out.println(value)

他のヒント

そして、自分の書いた文章を取得す:

Double Value;
Value = 3.14159265 ;
System.out.println(Value.toString()); //outputs 3.14159265
Value = Math.sin(Value);
System.out.println(Value.toString()); //outputs 3.5897930298416118E-9

いので2つのオプション:

  1. このコードで掲載していないのコードだけを使用したつまらないものになってしまい低い場合は、システムで、こんコンパイル)
  2. 何か変化の価値がNaNになる前又は後にMath.罪

まず第一に、あなたはDouble参照(ラッパー)タイプではなく、doubleプリミティブ型を使用している - なぜ?あなたが実際に(、ところで、一般的なJavaコーディング標準に基づいて大文字で始めるべきではありません)Valueを初期化するために使用しているコードは何ですか?私の推測では、あなただけの適切Valueを初期化していないということです。 double(ないDouble)を使用して起動してみます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top