我有一些在Arduino编写的ESP32上运行的代码。问题是我的结果在不应该被四舍五入的情况下被四舍五入。
float step_value = (float)abs(levels_values[i] - levels_values[i - 1]) / abs(levels_percentages[i] - levels_percentages[i - 1]);
float percentage_diff = (float)abs(current_value - levels_values[i - 1]) / step_value;
Serial.println(step_value);
Serial.println(2.00/step_value);
Serial.println(2.00/0.07);
并且在控制台内,输出为:
0.07
30.00
28.57
为什么要除以变量,则得到一个四舍五入的值,而当除以变量的值时,得到正确的值。
levels_values和levels_percentages向量的类型为int
step_value
的值约为.0666667。 Serial.println(step_value)
未打印完整值;将其舍入到小数点后两位小数。
[Serial.println(2.00/step_value)
打印“ 30.00”,因为2.00 / .0666667约为30。
[Serial.println(2.00/0.07)
打印“ 28.57”,因为2.00 / .07约为28.57。