gpt4 book ai didi

划分两个 float 时的 C 怪异行为

转载 作者:行者123 更新时间:2023-12-05 01:23:41 26 4
gpt4 key购买 nike

我有一些在用 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_valueslevels_percentages vector 的类型为 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。

关于划分两个 float 时的 C 怪异行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60505139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com