我正在尝试将双精度类型转换为固定类型表示。根据所选的输入,我的原始值可以是例如0.00996、989.15、1600.25、89.72等等。这里的要点是,我的所有输入值都是正数,但小数位之前(和之后)的位数可以改变。我正在尝试通过适当的缩放将这些双精度类型转换为定点表示。我尝试了2.14缩放(乘以16,384),但不确定如何将其扩展到小数位前的可变位数的情况。另外,如何才能最好地确保转换后的值具有最大的准确性/精确度?任何帮助都将不胜感激。谢谢。
我正在使用的代码:
fixedScale = (int) Math.Pow(2.0, 64.0);
int new_val = (int) (fixedScale * value);
发布于 2013-07-08 21:41:55
如果你想要一个固定点表示,那么你只需要决定比例。一旦您决定将浮动转换为固定,如下所示:
int fixedValue = (int)Math.Round(floatValue*Scale);
在另一个方向,就像这样:
double floatValue = (double)fixedValue/Scale;
至于使用什么尺度,这取决于您试图实现的目标以及输入数据是什么。
https://stackoverflow.com/questions/17536363
复制相似问题