将 double* 转换为 float*

Convert double* to float*

我想知道如何在 C 或 C++ 中将 double* 转换为 float*,以及将 float* 转换为 double*?谢谢。我尝试使用 (float*)(double*) 进行转换,但据我观察,它似乎不起作用。

将指针转换为不同的类型不会影响指向的值。取消引用此类强制转换指针将强制以不同类型读取或写入内存内容。由于 doublefloat 具有不同的不兼容表示,因此会导致未定义的行为。

您可以使用简单的循环在 floatdouble 数组之间进行复制,但实际上您会将值从一种表示形式转换为另一种表示形式,因此在转换为 [=12] 时会失去精度=] 并且在转换回 double.

时不恢复它

假设 dp 和 fp 指向至少有 n 个元素的数组:

void convert_float_to_double_array(double *dp, const float *fp, size_t n) {
    while (n--) *dp++ = *fp++;
}

除非内存大小是一个真正的问题,或者您正在为具有严重硬件限制的嵌入式系统编程,否则您根本不应该使用 float