buffer[0] = ((float)(( buffer[0] + buffer[1])/3)+0.8);
int buffer[100];
我还没有找到满意的答案,目前无法运行这段代码进行测试。
我继承了一个嵌入式 C 代码库,其中包含上面的方程,其中个人只需将整个方程转换为浮点数。
我理解整数数学,如果你正在做一些类似于整数除法的事情,那么至少需要将一个转换为浮点数才能得到准确的答案而不是截断的答案。但我从未见过将整个方程转换为浮点数。
我的问题是:
这会导致编译器将所有内容视为浮点数吗?
是否先完成括号中的方程,然后将结果转换为浮点数?在后一种情况下,
(buffer[0] + buffer[1])/3)
将进行整数除法,并在提升为双精度数以加 0.8 之前截断小数。
有什么想法吗?
不。
buffer[0] + buffer[1])/3
是整数运算,然后将值转换为 float
。