C ++中的错误功能

时间:2015-02-02 23:46:18

标签: c++ class floating-point-conversion

目前我在一个应用程序中有一个函数,它接受一个浮点作为参数,并且应该对传入的值执行简单的乘法和除法。在将值传递给应用程序中的函数之前,它是一个类型转换为浮动作为主要应用程序的细节处理整数的数字数据。不幸的是,当我将0.0的值传递给函数时,它不会生成1.0的输出(它应该从函数执行的计算中得出)但只输出值0.0并且我想知道为什么计算失败了正如我所知,程序编译的正确输出和计算是正确的。

以下是代码:

void CarPositionClass::centre(float inputPos)
{
    if ((inputPos <= 0) && (inputPos >= -125))
    {
        membershipC = ((inputPos + 125)*(1 / 125));
    }
}

还应注意,membershipC是一个浮点变量,它是CarPositionClass的成员。

2 个答案:

答案 0 :(得分:6)

1 / 125更改为1.0 / 1251 / 125使用整数除法,因此结果为0.

或更改此表达式

((inputPos + 125)*(1 / 125))

(inputPos + 125) / 125

由于inputPos是浮点数,inputPos + 125也是浮点数,然后将浮点数除以整数就是浮点数。

P.S。这肯定是一个重复的问题。我希望C ++专家能够在任何时候降低重锤。 :)

答案 1 :(得分:2)

两个整数之间的除法产生整数。至少有一个操作数必须是浮点类型才能截断结果:

membershipC = ((inputPos + 125)*(1.0 / 125));
//                               ^^^