将 double* 转换为 float*
Convert double* to float*
我想知道如何在 C 或 C++ 中将 double*
转换为 float*
,以及将 float*
转换为 double*
?谢谢。我尝试使用 (float*)
和 (double*)
进行转换,但据我观察,它似乎不起作用。
将指针转换为不同的类型不会影响指向的值。取消引用此类强制转换指针将强制以不同类型读取或写入内存内容。由于 double
和 float
具有不同的不兼容表示,因此会导致未定义的行为。
您可以使用简单的循环在 float
和 double
数组之间进行复制,但实际上您会将值从一种表示形式转换为另一种表示形式,因此在转换为 [=12] 时会失去精度=] 并且在转换回 double
.
时不恢复它
假设 dp 和 fp 指向至少有 n 个元素的数组:
void convert_float_to_double_array(double *dp, const float *fp, size_t n) {
while (n--) *dp++ = *fp++;
}
除非内存大小是一个真正的问题,或者您正在为具有严重硬件限制的嵌入式系统编程,否则您根本不应该使用 float
。
我想知道如何在 C 或 C++ 中将 double*
转换为 float*
,以及将 float*
转换为 double*
?谢谢。我尝试使用 (float*)
和 (double*)
进行转换,但据我观察,它似乎不起作用。
将指针转换为不同的类型不会影响指向的值。取消引用此类强制转换指针将强制以不同类型读取或写入内存内容。由于 double
和 float
具有不同的不兼容表示,因此会导致未定义的行为。
您可以使用简单的循环在 float
和 double
数组之间进行复制,但实际上您会将值从一种表示形式转换为另一种表示形式,因此在转换为 [=12] 时会失去精度=] 并且在转换回 double
.
假设 dp 和 fp 指向至少有 n 个元素的数组:
void convert_float_to_double_array(double *dp, const float *fp, size_t n) {
while (n--) *dp++ = *fp++;
}
除非内存大小是一个真正的问题,或者您正在为具有严重硬件限制的嵌入式系统编程,否则您根本不应该使用 float
。