【发布时间】:2018-11-13 21:05:03
【问题描述】:
在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]);
提前致谢!
【问题讨论】:
-
考虑到
double可以存储比float更多的内容,它们都不是真正正确的,所以您可以完全降低精度或值 -
这两个问题其实是一样的。无论哪种情况,您都从
double值开始,并希望转换为float值。换句话说,您如何获取double与将其转换为float无关。 -
@NathanOliver 在这里失去精度不是问题。哪一个给我最接近的数字?因为我必须将双精度转换为浮点数?
-
@Mogi - 它们都会为您提供相同的
f值。 -
@sebrockm:不一定;仅当原始数组是只读的并且程序尝试修改
d指向的数据时。
标签: c++ c++11 type-conversion implicit-conversion