Visual c++中的未知值
Unknown value in Visual C++
在Visual Studio c++中进行计算时,我发现angle
的最终值为-1.#IND000000000000
这个值是什么意思?它已经超出了范围吗?以下是我试图实现的代码我如何计算圆弧角之间的两点在一个圆上?从这个公式
因为<一口> 1> x <子> 2 子> + y <子> 1 子> y <子> 2 子> + z <子> 1子> 2 )/r <一口> 2> p> 一口>子>一口>
double x = vec1X * vec2X;
double y = vec1Y * vec2Y;
double r = sqrt(((vec2X - originX) * (vec2X - originX))+((vec2Y - originY) * (vec2Y - originY)));
angle = acos ((x + y) / r*r);
重现错误的样例值
vec1X = 91.094001770019531;
vec1Y = 147.74990844726562;
vec2X = 94.163322448730469;
vec2Y = 187.93711853027344;
originX = 136.79920959472656;
originY = 223.69624328613281;
表示结果不确定;更标准的术语是"not a number"或"NaN"。
可能的原因有:
-
sqrt
的参数为负 - 除法的两个操作数都为零
-
acos
的参数超出[-1,1]
的范围。
以上任何一种情况都可能由于浮点舍入误差而发生,即使在数学上是不可能的;因此,在将值传递给具有有限输入范围的函数之前,您应该始终检查值。
这是因为acos
参数应该位于[-1.0 ..][1.0],而你的不是。例如,如果r
接近于零,则有很大的误差。如果您确定输入是正确的,那么尝试将小于-1的值映射到-1,大于1的值映射到1
这是一个NaN值
它实际上意味着一个"不确定"的值,这意味着它可以是"任何东西"。0除以0是"不确定"
不计算这些,acos中实参的值是多少?
相关文章:
- 继承期间显示未知行为的子类
- 输入中的字符串数未知(以字母表示)
- 具有未知值时的时间复杂性
- 链表中写入访问冲突的未知原因
- 正在生成未知类实例
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 读取文件时运行时的未知行为
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 初始化多个未知基类
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何存储未知次数迭代的输入?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 未知的 CMake 命令"create_single_source_cgal_program"
- 如何在C++中循环访问未知对象方法?
- Coursera :自动评分器的未知信号 11
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 未知的 GCC 链接器错误,但已成功构建
- 如何从未知视图中声明范围::v3::View 变量
- std::string.size() 未知行为