为什么我在下面的代码中没有得到正常的结果?
void Motors::setCycleDutyA(int percentage) {
Serial.println(percentage);
Serial.println(pwmCycleDutyA);
float x=percentage/100;
Serial.print(x);
pwmCycleDutyA = int(255*x);
Serial.println(pwmCycleDutyA);
}
当我调用函数时:
Motors::setCycleDutyA(45);
我得到这些结果:
45 255 0.000
45 0 0.000
45 0 0.000
我错过了什么?
最佳答案
这里:
float x=percentage/100;
您正在执行整数除法(因为两个操作数都是整数)。这意味着每当 percentage
小于 100
时,结果将为 0
。这解释了您得到的结果。
改成:
float x=percentage/static_cast<float>(100);
或者:
float x=percentage/100.f;
关于c++ - 变量类型困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525768/