目前我在一个应用程序中有一个函数,它接受一个 float 作为参数,并且应该对传入的值执行简单的乘法和除法。在将值传递到应用程序中的函数之前,它被类型转换为float 作为主要应用程序的细节处理整数中的数字数据。不幸的是,当我将 0.0 的值传递给函数时,它不会生成 1.0 的输出(它应该从函数执行的计算中得到),而只是输出 0.0 的值,我想知道为什么计算无法产生据我所知,程序编译时的正确输出和计算是正确的。
代码如下:
void CarPositionClass::centre(float inputPos)
{
if ((inputPos <= 0) && (inputPos >= -125))
{
membershipC = ((inputPos + 125)*(1 / 125));
}
}
还应注意,membershipC 是一个浮点变量,它是 CarPositionClass 的成员。
最佳答案
将 1/125
更改为 1.0/125
。 1/125
使用整数除法,所以结果为 0。
或者改变这个表达式
((inputPos + 125)*(1 / 125))
到
(inputPos + 125) / 125
因为inputPos
是 float ,所以inputPos + 125
也是 float ,然后用一个整数除以一个 float 就是一个 float 。
附言这肯定是一个重复的问题。我希望 C++ 专家现在随时可以放下双锤。 :)
关于c++ - C++ 中的错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288948/