我正在尝试计算整数的平均值并将其分配给float
变量。当我使用 cgdb 调试它并打印平均计算的右侧时,它给出了正确的数字。但是,当我将其分配给 (float*)payload
时,值会从 401850471
更改为 401850464.00
。
float sum= 0.0;
for (int i = 0;
i<avg_operator->data_source->column_pointer.result->num_tuples;
i++) {
sum+= ((int*)avg_operator->data_source->column_pointer.result->payload)[i];
}
((float*)avg_operator->result->payload)[0]=
sum/(float)avg_operator->data_source->column_pointer.result->num_tuples;
最佳答案
您无法通过转换指针将 int 转换为 float,这会给出随机/未定义的值。您需要取消引用浮点指针,并分配值。
关于c - 给 float 变量赋值会改变 C 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48103363/