我正在尝试将double类型转换为固定类型表示。根据所选的输入,我的原始值可以是例如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);
答案 0 :(得分:1)
如果您想要一个固定点表示,那么您只需要确定比例。一旦你决定从浮动转换为固定,就像这样:
int fixedValue = (int)Math.Round(floatValue*Scale);
在另一个方向:
double floatValue = (double)fixedValue/Scale;
关于使用什么规模,这取决于您要实现的目标以及输入数据。