繁体   English   中英

警告C4244:'argument':从'double'转换为'float',可能会丢失数据 - c ++

[英]warning C4244: 'argument' : conversion from 'double' to 'float', possible loss of data - c++

我昨天遇到了这个问题并且无法修复它。 所以,如果你能帮助我,我很高兴。

所以我得到这个错误:

warning C4244: 'argument' : conversion from 'double' to 'float', possible loss of data

从这两行

angles[0] = (float)(atanf(delta[2] / hyp) * 57.295f - MyPunch[0] * 2);
angles[1] = (float)(atanf(delta[1] / delta[0]) * 57.295f - MyPunch[1] * 2);

其余的代码;

void calcang(float *src, float *dst, float *angles)
{
    float MyPunch[2];
    Lokalitetstjeneste.GetPunch(MyPunch);
    double delta[3] = { (src[0] - dst[0]), (src[1] - dst[1]), (src[2] - (dst[2] - 61)) };
    double hyp = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
    angles[0] = (float)(atanf(delta[2] / hyp) * 57.295f - MyPunch[0] * 2);
    angles[1] = (float)(atanf(delta[1] / delta[0]) * 57.295f - MyPunch[1] * 2);
    angles[2] = 0.0f;

    if (delta[0] >= 0.0)
    {
        angles[1] += 2.0f;
    }
}

deltahyp是double,除法的结果是double, atanf取浮点数,这是错误的来源。

我会将atanf更改为atan或执行所有内容的双重操作。 Double有大约16位有效数字,仅浮动约7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM