【发布时间】:2016-04-17 23:04:33
【问题描述】:
我正在尝试将浮点值转换为整数,修改 int 值,然后重新转换回浮点值。但是,小数的值会丢失,我很确定我在代码中使用了错误的 static_cast() 函数。
我的代码是一个二进制乘法器,它将二进制值向左移动 f 次。例如,当我在做 1.2 x 2 之类的事情时,我只得到 2 而不是 2.4。
int mantissa;
int f;
int exp;
float result = mantissa + 0x800000;
int resultInt = static_cast<int>(result);
int expF = log2(abs(f));
int expM = exp + expF;
int newExp = (127 + 23 - expM);
resultInt >>= newExp;
float result2 = resultInt;
【问题讨论】:
-
为什么不把浮点值的整数表示保存到另一个变量中呢?然后你会保留原来的,仍然有你想要的 int 值。
-
乘以某个因子得到固定的小数
int表示。 -
为什么要转换为 int 呢?如果您想要浮动,请将其保留为浮动。
-
我会先打开一本字典,然后查找“整数”这个词的含义。
-
你想做什么? (那么包含此代码的函数的名称是什么?)将两个浮点数相乘比
f1 * f2更快?在这种情况下,你甚至不应该考虑对数。
标签: c++ floating-point int type-conversion