从浮点数转换为自定义数字类型

Muh*_*mad 4 c++ floating-point type-conversion

我已经创建了自己的固定类型整数类型,并且该库适用于许多编译器和平台,唯一需要解决的问题是从内置浮点类型转换为我的类型.

该浮点类型可有小尾数但随着指数沿着它可能有很大的价值,如果我选择投float,double或者long doublelong longunsigned long long可能发生截断.

如果编译器使用IEEE-754规范,那么提取尾数和指数很容易,但如果编译器使用其他格式则会怎样.

所以,我的问题是:是否有任何通用算法允许我仅使用语言功能从浮点数中提取完整值?

谢谢

Ale*_*nze 5

你可能会在这里找到一个有点类似问题的答案.这个想法是,如果底层格式是二进制的,那么如果尾数中没有比最大整数类型中的位更多,则几乎可以保证能够提取尾数和指数而不会丢失.您可以使用double frexp(double value, int *exp);double ldexp(double x, int exp);用于此目的.

另一种选择是sprintf()使用%a数字来获取所有数字,然后手动将文本表示转换为您需要的数字.