c++ - C++ 中的错误函数

标签 c++ class floating-point-conversion

目前我在一个应用程序中有一个函数,它接受一个 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/1251/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/

相关文章:

c++ - 使用 shared_ptr 在类及其成员对象之间共享变量是一个好的解决方案吗?

c++ - 是否可以隐藏 arduino 的库代码?

c++ - 在指向成员的指针之间转换

Python 使用来自其他类的方法

将二进制浮点 "1101.11"转换为十进制 (13.75) 的正确算法?

c++ - Visual Studio 和 Xcode 中的 C++ 运算符重载错误

javascript - 有没有办法在 ES6 类上使用内部方法?

r - R中S3类的重载矩阵乘法

floating-point - 将有符号的 IEEE 754 float 转换为十六进制表示

lua - 使用 LUA 解码 UDP 消息