-7

我理解 cos(); 在 C++ 中使用弧度是对的..你可以用..获得弧度

 (angle * PI ) / 180;

那为什么

 float value = cos( (90 * PI / 180 ); // == 6.1 etc... and not 0?

如果我在 Windows 中使用科学计算器,cos(90)我会得到零。然而,作为一个实验,当我 push 时cosh(90),我得到了在 C++ 中调用函数给我的相同的 6.1 等值。

有什么想法吗?这是我现在的代码...

http://ideone.com/YQgLz

我基本上要问的是为什么在 C++ 中返回的数字与在 Windows 计算器上的cos(90 degrees)数字相同。cosh(90)cos(90 degrees)应该是零吗?

4

1 回答 1

3

所以你并没有真正得到 6.1(大于 1 的余弦/正弦值仅适用于某些复数),而是 6.1 * 10^-17。问题是浮点数不是精确值(本质上 - 这就是 base-2 表示的工作方式),数学函数也不返回精确值 - 它们使用各种近似公式来计算值 -永远不要期望它们是准确的。

于 2012-09-21T05:34:16.067 回答