if语句未执行
if statement not executed
我有一个if语句没有执行的问题。下面的角是固定的,const。现在我想要一个从一个角落移动到另一个角落的静态变量。
第一个"如果"有效,第二个无效。
LATLON_TO_CM是1.1113195f。我试图在每个数字后面加上f,使所有数字都是float、double,语句不会执行。这不是逻辑,我把同一个数字放在两个变量中(它们有不同的名称,但数据类型相同),但它不起作用。
const int32_t corner_1_X = 47.590000 * 1e3 * LATLON_TO_CM;
const int32_t corner_1_Y = 7.646000 * 1e3 * LATLON_TO_CM; //bigger
const int32_t corner_2_X = 47.590000 * 1e3 * LATLON_TO_CM;
const int32_t corner_2_Y = 7.644000 * 1e3 * LATLON_TO_CM; //smaller
static int32_t alphadroneXposition = corner_1_X;
static int32_t alphadroneYposition = corner_1_Y;
// if (corner_1_Y > corner_2_Y)
// moveAlphadroneYneg(&alphadroneYposition);
if (alphadroneYposition > corner_2_Y)
moveAlphadroneYneg(&alphadroneYposition);
因此,出于某种原因,您的代码并没有说alphadroneY位置大于角位置,尽管它稍大。我自己看了三次,只是为了确认是的,第一个数字稍微大一点。
alphadroneY位置=7.646000*1e3
角_2_Y=7.644000*1e3
通常情况下,这是因为浮点精度和比较两个浮点数字所产生的误差。查看stackoverflow中关于比较浮点值的相关主题。
浮动和双重比较最有效的方法是什么?
希望这能有所帮助!
相关文章:
- 如何及时执行if语句?
- 获取上次执行的返回语句的行
- 如何仅在父循环的所有迭代都为真时才执行嵌套的 if 语句?
- 表单显示对话框函数错误,并且不执行下面的语句
- 如何知道调试时执行了哪个语句
- 在可变函数调用中执行一次语句
- 在多个对象上执行同一语句的零成本抽象
- 我怎样才能接受输入作为双精度值并执行 IF ELSE 语句
- c++:if 语句无法正常运行,并继续执行无效输出
- 为什么 cout 语句在传递指向函数的指针时没有执行?
- c++ IF 语句执行,但添加 ELSE 会显示错误
- C 程序如果功能中的语句不执行.在逻辑上似乎是错误的
- 当您希望在Arduino Uno编程中同时执行不同函数时,使用什么代码/语句
- OR 语句执行所有评估
- C++ Switch 语句在中断后执行
- 强制执行C++语句顺序
- SQLITE 内存不足 无法执行语句
- 如何在c++中执行语句
- 如何使用c++/python程序在终端中运行程序,然后在该程序中执行语句
- QODBCResult::exec: 无法执行语句:"[Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误