2

なぜ

format(4444444444444444444,scientific=FALSE)

「4444444444444444672」を返しますか?

整数精度の物かなと思ったのですが、この数値は比較的小さいです。ありがとう!

Ubuntu Linux で R バージョン 3.0.0 を実行しています。

4

2 に答える 2

5

R に次より大きい整数を指定した場合:

> .Machine$integer.max
[1] 2147483647

それを double に変換します。R-FAQ には 7.31 があります。浮動小数点の精度に関する質問は、SO: Controlling number of decimal digits in print output in R でよく発生します。

(ベクトル インデックスのサイズは、R の最後のバージョン (3.0.0) で大きくなり、整数の最大サイズが将来的に拡大される可能性があるようです。どうすればこの制限を維持できるのかよくわかりません。整数のサイズを変更し、より大きなベクトル インデックスにもアクセスします)。

于 2013-05-21T14:17:11.743 に答える
4

これは 32 ビット整数ではありません。

R> as.integer(4444444444444444444)
[1] NA
Warning message:
NAs introduced by coercion 

これは倍精度浮動小数点数で、15 ~ 16 桁の精度しかありません。数値が より大きいため、上記は失敗します.Machine$integer.max。は...672丸め誤差です。大きな数を使用する必要がある場合は、gmpなどのパッケージを検討してください。

于 2013-05-21T14:18:59.727 に答える