3

cmath/math.h の標準 cos 関数に奇妙な問題があります。明らかに、状況によっては、間違った値または単に未定義の値が返されます。

#include <cmath>
#include <iostream>

int main()
{
 double foo = 8.0 * 0.19634955; // 1.5707964
 double bla = std::cos(foo);    // should be 0.9996242168245
 std::cout << bla << std::endl; // cos returns -7.32051e-008

 return 0;
}

たとえば、cos の入力値が 1.5707964 の場合、cos は -7.32051e-008 を返します (double を使用する場合、float では -4.XYZe-009 になります)。

ここで本当に基本的で単純なものが欠けていますか...?

4

3 に答える 3

25

cos はラジアンを期待し、度数を与えています。入力値に 3.14159/180 を掛けると、正しい答えが得られます。

于 2009-12-06T13:52:55.753 に答える
2

cos(PI/2) = 1 ではなく 0 です。

于 2010-06-25T15:55:27.673 に答える
1

ラジアンまたは度を渡しているかどうかはわかりません...しかし、fooの値はPI / 2に近いです。したがって、cos(foo) = 0 および sin(foo) = 1 が得られます (何を期待していましたか?)

于 2009-12-06T16:31:20.533 に答える