Floating point 使用浮点数实现双精度?

Floating point 使用浮点数实现双精度?,floating-point,double,Floating Point,Double,假设我所处的环境中唯一的浮点类型是(比如)32位宽,我想用64位浮点进行一些计算 是否有任何合理/有效/可行的方法来使用float32数据类型来实现更广泛的浮点数据类型,如float64?(甚至浮动63,或浮动48,或任何明显比我的32宽的东西?) 还是我最好只使用整数实现更长的浮点数据类型 我猜位位置的具体含义基本上不可能做到这一点,但我不是数学家,也不知道如何搜索,所以可能有一种聪明的方法。有一些技巧可以让你获得比机器想要的精度更高的精度。其中最著名的是Kahan求和算法,用于在计算一组浮点

假设我所处的环境中唯一的浮点类型是(比如)32位宽,我想用64位浮点进行一些计算

是否有任何合理/有效/可行的方法来使用float32数据类型来实现更广泛的浮点数据类型,如float64?(甚至浮动63,或浮动48,或任何明显比我的32宽的东西?)

还是我最好只使用整数实现更长的浮点数据类型


我猜位位置的具体含义基本上不可能做到这一点,但我不是数学家,也不知道如何搜索,所以可能有一种聪明的方法。

有一些技巧可以让你获得比机器想要的精度更高的精度。其中最著名的是Kahan求和算法,用于在计算一组浮点数的和时获得额外精度:


设计这样一个程序需要对浮点计算的内部工作原理有相当详细的了解,因此请谨慎行事。

您可以使用一些技巧来获得比您的机器想要的精度更高的精度。其中最著名的是Kahan求和算法,用于在计算一组浮点数的和时获得额外精度:


设计这样一个程序需要对浮点计算的内部工作原理有相当详细的了解,所以请谨慎行事。

我认为你的猜测是正确的。可以尝试将64位浮点表示为两个32位浮点的乘积,但我认为不能同时使用指数和尾数。可能会得到类似于float48的净效果,但总的来说,这似乎相当不可靠


但是应该有一些库来使用INT来实现这一点。不久前,常用的CPU还没有硬件浮点支持。

我想你的猜测是正确的。可以尝试将64位浮点表示为两个32位浮点的乘积,但我认为不能同时使用指数和尾数。可能会得到类似于float48的净效果,但总的来说,这似乎相当不可靠

但是应该有一些库来使用INT来实现这一点。不久前,常用的CPU还没有硬件浮动支持