如何在不包含指数表示法的情况下从浮点值中获取原始值(实数)



我刚刚将 16 位数字转换为浮点值。

 float myVal =(float) 4447962230071312;
Console.WriteLine(myVal);

这给出了输出:4.44796223007131E+15

我尝试了下面的代码,

long originalVal = (long)myVal;
Console.WriteLine(originalVal);

这给出了输出:4447962352582656

Console.WriteLine(myVal.ToString("0.#########"));

这给出了输出:4447962000000000

既然,如何找回4447962230071312的原始价值

float(

Single(仅对小数部分使用23位,因此Single可以表示整数值,而不会产生舍入误差

2**(23 + 1) - 1 == 16777215

您可以切换到具有52位小数部分的double,因此最多可以表示整数值

2**(52 + 1) - 1 == 9007199254740991 > 4447962230071312

有关详细信息,请参阅

https://en.wikipedia.org/wiki/Single-precision_floating-point_formathttps://en.wikipedia.org/wiki/Double-precision_floating-point_format

法典:

  double myVal = 4447962230071312.0;
  long originalVal = (long)myVal;

最新更新