1

我正在尝试将双精度类型转换为固定类型表示。根据选择的输入,我的原始值可以是例如 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);
4

1 回答 1

1

如果你想要一个定点表示,那么你只需要决定比例。一旦您决定像这样从浮动转换为固定:

int fixedValue = (int)Math.Round(floatValue*Scale);

而在另一个方向是这样的:

double floatValue = (double)fixedValue/Scale;

至于使用什么规模,这取决于您要达到的目标以及输入数据是什么。

于 2013-07-08T21:41:55.233 回答