0

重複の可能性:
tan 45 で 0.9999 となる

私が使用するtanと、長い長い答えが得られます:

double degrees = 45.0;
double radians = Math.toRadians(degrees);
System.out.println(Math.tan(radians));

このコードを実行すると、次のようになります。

0.9999999999999 repeating

なんで?

4

2 に答える 2

1

double (または実際には double の下にあるシステム、IEEE754) は完全ではないためです。double と float を扱うときは、常にこれに注意してください (Java だけでなく、どの言語でも)。

于 2013-02-02T13:48:46.823 に答える
1

なぜだめですか?これは 1 に近いです。浮動小数点演算は決して正確ではありません。その理由は、CPU 内の数値が 2 進数で表現されるためです。
また、2 進数のフーティング ポイント表現は、たとえば 1/10 などを正確に表すことはできません。

浮動小数点プログラミングについて少し読んでください。

于 2013-02-02T13:49:00.673 に答える