在 C++ 中将 double 转换为 float 的正确方法是什么。转换是隐式的吗?
问题 1:考虑 double d = 5.0;
和 float f;
哪个是正确的?
-
f = d;
-
f = (float)d;
-
f = static_cast<float>(d);
问题 2:现在考虑我们有
char *buffer = readAllBuffer();
double *d = (double*)(buffer + offset);
float f;
现在哪个是正确的?
-
f = d[0];
-
f = (float)d[0];
-
f = static_cast<float>(d[0]);
提前致谢!
最佳答案
它们都归结为同一件事,数组的使用是一个转移注意力的问题。你确实可以写
float f = d;
一些人争论说 static_cast
使代码更加可读,因为它非常清晰。如果使用不那么长篇大论的形式,它还可以消除某些编译器可能发出的警告。
当然,由于 double
是 float
的超集,您可能会失去精度。最后,请注意对于
float f1 = whatever;
double d1 = f1;
float f2 = d1;
,C++标准坚持f1
和f2
必须是相同的值。
关于C++双指针数组到 float 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50682097/