为什么剂量 cos(90) 不等于零
Why dose cos(90) not equal zero?
我知道cos();在C++中使用弧度是正确的..你可以得到弧度..
(angle * PI ) / 180;
那么为什么
float value = cos( (90 * PI / 180 ); // == 6.1 etc... and not 0?
如果我在窗口中使用科学计算器cos(90)
我得到零。 然而,作为一个实验,当我推cosh(90)
时,我得到了同样的 6.1 等......在C++中调用函数给我的价值。
知道发生了什么吗? 这是我现在的代码...
http://ideone.com/YQgLz
我基本上要问的是,为什么cos(90 degrees)
C++返回的数字与在Windows计算器上执行cosh(90)
相同的数字。 反正cos(90 degrees)
不应该是零吗?
所以你并没有真正得到 6.1(大于 1 的余弦/正弦值只对某些复数是可能的),而是 6.1 * 10^-17。问题是浮点数不是精确的值(本质上 - 这就是基数 2 表示的工作方式),数学函数也不会返回精确的值 - 它们使用各种近似形式来计算值 - 永远不要期望它们是精确的。
相关文章:
- 余数除法和不允许除以零 (c++) 时遇到问题
- 大小 N 和 N 的所有排列不一定等于数组的大小
- 设置一个等于等于NullPtr的变量的变量
- std::list 中的 rbegin() 永远不会等于指向列表的迭代器?
- C 双重不能等于两个INT分裂
- 我需要可复制的缓冲区,尽可能轻(例如,不初始化零)
- C++,将输入字符串转换为数字,转换失败不应返回零
- 浮点到字符串,不带尾随零
- For 循环不会在零索引处停止
- QString::number() 'f'格式,不带尾随零
- 设置精度 + 固定 - 没有不必要的零的打印值
- C++等于,而不是等于
- 将双精度转换为具有 n 个小数位的字符串,不带尾随零
- 使用不带尾随零的固定精度
- 程序不工作(前导零)
- 两个值的最大值,其中一个不能等于预定义值
- 不能修改零?
- 正则表达式不能以零开头
- 如何格式化浮点值,使其从不使用指数表示法,也不具有尾随零
- 如何使用Boost.Date_Time格式化而不使用前导零