c++ - 变量类型困惑

标签 c++ optimization arduino

为什么我在下面的代码中没有得到正常的结果?

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/

相关文章:

java - 需要在非负整数的二进制表示的子串中找到奇数个1

numpy - 为什么 numpy.absolute() 这么慢?

c++ - VSCode 上的 PlatformIO 未编译 : collect2. exe:错误:ld 返回 1 退出状态

audio - 按下按钮时在Arduino上播放WAV示例

c++ - 在缓冲区中推送多个变量值

android - 使用 Arduino 获取手机 IMEI

c++ - 在列表中查找最常见的元素(C++ STL)?

c++ - 使用 CodeBlocks 将 GLEW 链接到 SFML 项目时出现问题

c++ - 优化标准迭代算法

C++:声明指针