将Float转换为整数等效

Dan*_*der 2 c++ floating-point integer

我想将浮点用户输入转换为等效的整数.我可以通过接受一个输入字符串来做到这一点,比如说"-1.234"然后我可以显式地将每个字符转换为它的十进制表示.(顺便说一下大端).所以我只想说我给的例子,

-1.234 = 1|01111111|00111011111001110110110

sign bit = 1 = 128<<31
exponent bits = 01111111 = 127<<23
mantissa bits = 00111011111001110110110 = 1962934
decimal equivalent = 1962934 + 127<<23 + 128<<31
Run Code Online (Sandbox Code Playgroud)

这很容易但不实用.有一个更好的方法吗?也许我会做某种类型的铸造?

mik*_*ked 7

联合允许您以不同类型访问同一块内存

union floatint
{
   float f;
   int i;
}

floatint fi;
fi.f=-1.234;
int i=fi.i;
Run Code Online (Sandbox Code Playgroud)

警告:由于大小和调整,你可以进入奇怪的平台差异和类似的东西,但是由于你已经通过尝试将float解释为int来做出一些假设,你可能能够逃脱它.阅读更多关于工会的信息,我认为这就是你想要的.