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