C++ 中的错误函数
Faulty Function in C++
目前我在一个应用程序中有一个函数,它接受一个浮点数作为参数,并且应该对传入的值执行简单的乘法和除法。在将值传递到应用程序中的函数之前,它是类型转换到一个浮点数,因为主要应用程序的细节处理整数中的数字数据。不幸的是,当我将 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
是浮点数,所以inputPos + 125
也是浮点数,然后用一个整数除以一个浮点数就是一个浮点数。
P.S。这肯定是一个重复的问题。我希望 C++ 专家现在随时可以放下双锤。 :)
两个整数相除得到一个整数。至少有一个操作数必须是浮点类型才能不截断结果:
membershipC = ((inputPos + 125)*(1.0 / 125));
// ^^^
目前我在一个应用程序中有一个函数,它接受一个浮点数作为参数,并且应该对传入的值执行简单的乘法和除法。在将值传递到应用程序中的函数之前,它是类型转换到一个浮点数,因为主要应用程序的细节处理整数中的数字数据。不幸的是,当我将 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
是浮点数,所以inputPos + 125
也是浮点数,然后用一个整数除以一个浮点数就是一个浮点数。
P.S。这肯定是一个重复的问题。我希望 C++ 专家现在随时可以放下双锤。 :)
两个整数相除得到一个整数。至少有一个操作数必须是浮点类型才能不截断结果:
membershipC = ((inputPos + 125)*(1.0 / 125));
// ^^^