c++ - 从 float 转换为自定义数字类型

标签 c++ floating-point type-conversion

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

浮点类型的尾数可能很小,但与指数一起可能有很大的值(value),所以如果我选择转换 floatdoublelong doublelong longunsigned long long 说可能会发生截断。

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

那么,我的问题是:是否有任何通用算法允许我仅使用语言功能从 float 中提取完整值?

谢谢

最佳答案

您可能会发现有用的 my answer to a somewhat similar question here .这个想法是,如果底层格式是二进制的,那么如果尾数中的位数不多于最大整数类型中的位数,则几乎可以保证能够无损地提取尾数和指数。为此,您可以使用 double frexp(double value, int *exp);double ldexp(double x, int exp);

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

关于c++ - 从 float 转换为自定义数字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057546/

相关文章:

c - 访问 float 据位 - 无法找到解决方案

java - float 到 long 转换增加值

python - 如何在 python 上将元组类型转换为 int?

vb.net - 将 String 转换为整数并得到 null 等于 0

c++ - MASM str 和 substr?

c++ - 保存邮件正文的 MAPI 属性是什么

c++ - 我在哪里可以找到世界上最快的 atof 实现?

c++ - C++ 中不寻常的 typedef 使用

c++ - 稳定排序C++ HashMap -保留相等元素的插入顺序

string - 将字符串转换为二进制字符串表示的有效方法