なぜ
format(4444444444444444444,scientific=FALSE)
「4444444444444444672」を返しますか?
整数精度の物かなと思ったのですが、この数値は比較的小さいです。ありがとう!
Ubuntu Linux で R バージョン 3.0.0 を実行しています。
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) で大きくなり、整数の最大サイズが将来的に拡大される可能性があるようです。どうすればこの制限を維持できるのかよくわかりません。整数のサイズを変更し、より大きなベクトル インデックスにもアクセスします)。
これは 32 ビット整数ではありません。
R> as.integer(4444444444444444444)
[1] NA
Warning message:
NAs introduced by coercion
これは倍精度浮動小数点数で、15 ~ 16 桁の精度しかありません。数値が より大きいため、上記は失敗します.Machine$integer.max
。は...672
丸め誤差です。大きな数を使用する必要がある場合は、gmpなどのパッケージを検討してください。