我有一些大数字(整数)的简单运算(减法,乘法)。它们太大了,我必须将它们存储到long double
变量中。这很好,但在某些情况下,乘法会失去精度。
例子:
A = 84478098072866400.00
B = 419247971803584000000.00
A * B = 35417271278873496315650351919301394432.00
很明显,这是错误的。乘法的结果应该以零序列结束。
我需要保持精度,尤其是这个(当数字以零结尾时),因为这是最常见的情况。
我的问题是,请问该怎么做?有什么办法可以强迫long double
自己表现得更好吗?或者有什么选择如何获得存储数字的精度?
非常感谢!
编辑:
我不能使用任何外部库。我正在尝试解决 ACM 竞赛存档的一个问题。这是其中的一部分。
我会很好地失去精度,但我必须检测到它。当数字大于long double
它很可能(也许可以肯定)时,它以长的零序列结束。