此代码有一个整洁的错误。

错误状态:Narrowing conversion from 'double' to 'float'在xPos()内显示x_pos的位置;在底部的功能。

有人可以解释为什么以及如何纠正吗?

    //grab the current position
    double x_pos = clownfish->xPos();

    // move the fish 500pixels/sec in the right direction
    // delta time is measured in milliseconds, so divide by 1000 and multiply
    x_pos += 500 * (game_time.delta.count() / 1000.f);

    // update the position of the clown fish
    clownfish->xPos(x_pos);

最佳答案

有人可以解释为什么是这样以及如何纠正它吗?


缩小:浮点数小于两倍,类似于int8_t小于int16_t。最大浮点比最大的浮点小很多。

另请注意:较小的int将自动神奇地提升为较大的int。同样,您的编译器也没有反对“ double x_pos = clownfish-> xPos();”,double总是足够大以包含浮点数。



如何纠正:

如果您有信心浮动(较小的浮动)足以满足您的需要,或者您不允许更改小丑鱼代码,那么您可以考虑使用强制转换。

clownfish->xPos(static_cast<float>(x_pos)).


如果您愿意且不受禁止地更改clownfish代码,请确保clownfish x位置(即“ clownfish-> xPos()”返回的值)为双精度,并且函数“ clownfish-> xPos()”返回一个双。

09-25 10:14