7

111111111*111111111と同じであるを乗算しようとしましたが、111111111^2間違った結果が得られました。を与えるはず12345678987654321ですが、代わりに丸め誤差を与えます。長い数値には特別な変数タイプを使用する必要がありますか、それともこれはRのバグですか?

4

3 に答える 3

19

'gmp'パッケージを使用すると、これほど大きな値に対して操作を実行できます。

> library(gmp)
> j <- 111111111
> k <- as.bigz(j)
> mul.bigz(k, k)
[1] "12345678987654321"
于 2011-11-17T23:16:09.847 に答える
7

これは特にRの制限ではなく、倍精度浮動小数点演算の制限です。標準の倍精度浮動小数点数の精度は、小数点以下16桁程度です。合計に対する答えには17が必要です。Rには、より正確な変数型はありませんが、他の多くの言語もありません。

于 2011-11-17T22:57:04.277 に答える
6

Also, new package int64 from Romain Francois.

于 2011-11-21T13:18:26.960 に答える