给定一个浮点数,我想把它分成多个部分,每个部分都有给定的位数。例如,给定 3.1415926535 并被告知将其分成以 10 为基数的部分,每部分 4 位,它将返回 3.141 + 5.926E-4 + 5.350E-8。实际上,我想将一个双精度(精度为 52 位)分成三个部分,每个部分精度为 18 位,但使用 base-10 示例更容易解释。我不一定反对使用标准双精度 IEEE 浮点数的内部表示的技巧,但我真的更喜欢纯粹在浮点领域中的解决方案,以避免任何与字节序相关或非标准的问题浮点表示。
不,这不是家庭作业问题,而且,是的,这有实际用途。如果你想确保浮点乘法是精确的,你需要确保你相乘的任何两个数字永远不会超过你在浮点类型中有空间的数字的一半。从这种分解开始,然后将所有部分相乘并进行卷积,是一种方法。是的,我也可以使用任意精度的浮点库,但是当只涉及几个部分时,这种方法可能会更快,而且它肯定会更轻量级。