if语句未执行

if statement not executed

本文关键字:执行 语句 if      更新时间:2023-10-16

我有一个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中关于比较浮点值的相关主题。

浮动和双重比较最有效的方法是什么?

希望这能有所帮助!