下面的代码简单地将32位整数从要传递的对象转换为函数,该32位整数表示一个浮点数。我已经用在线计算器检查过,我得到了正确的符号,指数和曼荼罗,但奇怪的是我得到了错误的答案。
任何人都可以检查我是否在数学上(或者可能在编程上)以某种方式做错了!
问候
public double FromFloatSafe(object f)
{
uint fb = Convert.ToUInt32(f);
uint sign, exponent = 0, mantessa = 0;
uint bias = 127;
sign = (fb >> 31) & 1;
exponent = (fb >> 23) & 0xFF;
mantessa = (fb & 0x7FFFFF);
double fSign = Math.Pow((-1), sign);
double fMantessa = 1 + (1 / mantessa);
double fExponent = Math.Pow(2, (exponent -bias));
double ret = fSign * fMantessa * fExponent;
return ret;
}
最佳答案
像这样:
uint fb = Convert.ToUInt32(f);
return BitConverter.ToSingle(BitConverter.GetBytes((int) fb), 0);
关于c# - IEEE754到浮点C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31002050/