我的 RobotC 代码中有一个问题,当 afloat
达到无穷大时它会返回-1.#IO
这是 afloat
到达时返回的值-Infinity
。
所以问题是float
只能使用数值。我无法捕捉到这个值。
如果我把
if (value == -1.#IO) { ... }
编译器说unexpected #
如果我把
if (value == "-1.#IO") { ... }
编译器说char string constant '"-1.#IO"' cannot be compared with value
。这很明显,因为它试图将字符串与float
现在我的公式计算了一个值范围,其中负无穷大和正无穷大有时都存在。
所以我需要找到一种方法来在它弹出时捕获这个值,这样我就可以用一个数值float
(在这种情况下为 0)替换它。
float my_Trig_LawOfSin_2Sides1Angle(float angleA, float sideA, float sideB) //SideA must be opposite AngleA
{
//Catch the divide by 0 on this first line and then return sideA+sideB;
if (angleA == 0) {
return sideA + sideB; //this is to avoid the divide by 0 error
//when the bot is looking straight.
//It will return the distance of the
}
float angleB = (asin(sideB * sin(angleA * (pi / 180)) / sideA)) * (180 / pi);
if (angleB == "-1.#IO") { return 0; }
float angleC = 180 - (angleA + angleB);
float sideC = sideA * sin(angleC * (pi / 180)) / sin(AngleA * (pi / 180));
return sideC;
}
task main()
{
result = my_Trig_LawOfSin_2Sides1Angle(50, 200, 300);
}