【发布时间】:2016-02-11 19:55:05
【问题描述】:
我正在尝试对最多 10^18 的数字进行模运算符。我无法将这些数字存储在 int 中,如果我将其设为浮点数,则我无法应用模数运算符,我该怎么做。
我搜索了它,但没有找到我的答案。
我找到了一种类型转换的方法,但它不能解决我的问题,另一种是使用数组。
所以,只有使用数组的方法。
【问题讨论】:
-
你不显示计算,但它可以在它的步骤上做模数,所以它永远不会变大。
-
如果您使用的是 C99 标准或更高版本,则可以使用 long long 类型,该类型至少为 64 位,并且可以容纳 10^18。
-
这里是来自维基百科的列表:en.wikipedia.org/wiki/… 但它并不包括所有这些——还有更多。见:google.co.nz/search?q=c%2B%2B+arbitrary+precision
-
你有一种浮点取模运算,例如 linux.die.net/man/3/remainder - 只是 10^18 需要大约 60 位数据,对于 IEEE 双精度来说有点太多了
标签: c floating-point modulus