双类型的不动点表示法

本文关键字:表示 类型 | 更新日期: 2023-09-27 18:21:29

我正在尝试将双重类型转换为固定类型表示。根据所选的输入,我的原始值可以是例如0.00996、989.15、1600.25、89.72等等。这里的重点是,我的所有输入值都是正数,但小数点前(和后)的位数可能会有所不同。我试图通过适当的缩放将这些双重类型转换为不动点表示。我尝试过2.14缩放(乘以16384),但不确定如何将其扩展到小数点前位数可变的情况。此外,我如何才能最好地确保转换值的最大准确性/精度?如有任何帮助,我们将不胜感激。非常感谢。

我正在使用的代码:

fixedScale = (int) Math.Pow(2.0, 64.0);
int new_val = (int) (fixedScale * value);

双类型的不动点表示法

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

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

另一个方向是这样的:

double floatValue = (double)fixedValue/Scale;

至于使用什么规模,这取决于你试图实现什么以及输入数据是什么。