【发布时间】:2016-08-23 16:34:11
【问题描述】:
我想取一个 32 位的随机字符串,并将这个位字符串声明为 C++ 中的浮点数。
例如字符串 0.0111 1111.1000 0000 0000 0000 0000 000 应该给我对应于 1.5 的浮点数,因为这是根据 IEEE 754-2008 对 1.5 的 F32 定义。第一个 0 表示 +ve,接下来的 8 给你一个 127-127 = 0 的指数,23 位尾数给你.5。
如果字符串不是一个好的数据格式,那么我很乐意听取建议。
事实上,我想在 C++ 中创建一个随机浮点数,但我不知道如何。随机我的意思是每个位独立为 0 或 1。我发现的解决方案(例如:C++ random float number generation)建议使用随机整数生成器,然后除以 RAND_MAX,然后乘以 FLOAT_MAX 或根据某种均匀分布创建浮点数的其他方式。这对我没有好处,因为虽然值会均匀分布,但这会产生更多具有大指数的浮点数。
基本上是这个问题,但对于 C++:Convert Double to Binary representation?
【问题讨论】:
-
如果您想要的只是一个随机浮点数,请参阅:stackoverflow.com/questions/686353/…
-
int32_t x = /* random value */; float f = *(float *) &x;。不是说这是一个好主意或不会违反任何规则。但这是可以做到的。 -
std::bitset,也许吧?此外,您似乎在问两个完全不同的问题。你能澄清一下吗?
-
您需要解释更多关于该格式的信息,而不是简单地声明该字符串表示 1.5,因为连接是什么并不明显。
标签: c++ floating-point