gpt4 book ai didi

c++ - double : Multiplication of big numbers

转载 作者:行者123 更新时间:2023-11-28 08:08:19 25 4
gpt4 key购买 nike

我对大数(整数)进行了一些简单的运算(减法、乘法)。它们太大了,我必须将它们存储到 long double 变量中。这很好,但在某些情况下乘法会降低精度。

例子:

A = 84478098072866400.00
B = 419247971803584000000.00

A * B = 35417271278873496315650351919301394432.00

很明显,这是错误的。乘法结果应以零序列结尾。

我需要保持精度,尤其是这个(当数字以零结尾时),因为这是最常见的情况。

我的问题是,请问该怎么做?有什么方法可以强制 long double 表现得更好吗?或者是否有任何选项如何获得存储数字的精度?

非常感谢!

编辑:

我不能使用任何外部库。我正在尝试解决 ACM 竞赛存档的一个问题。这是其中的一部分。

精度丢失我会很好,但我必须检测它。当数字大于 long double 时,很可能(也许是肯定的),它以一长串零结尾。

最佳答案

如果你真的在处理大整数,你会想要做 arbitrary precision arithmetic只有内存限制了数字的大小(并且没有精度丢失)。 The GNU Multiple Precision Arithmetic Library是一个流行的库(以及关于有理数和 float 的任意精度算术),尽管我确信还有其他库。

关于c++ - double : Multiplication of big numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com