c - 给 float 变量赋值会改变 C 中的值

标签 c floating-point

我正在尝试计算整数的平均值并将其分配给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/

相关文章:

c - 如何修复语言环境?

C 结构到结构赋值 - 目标结构中的值不正确

c - 语言如何处理引擎盖下的打印 float ?

c - 读取带有 float 的数组(C 编程语言)

c - 如何在 For 循环中使用多个 Char 数组和 Float 数组?

python - 测试两条线段相交时的算术准确性问题

c - 在C中合并多个排序数组

c - 安全标识符 "directory"导致我的程序崩溃

c# - 使用 int 而不是没有小数的 float 有什么好处吗?

c++ - 如何使用C编程创建图像数据库?