2

as.numeric(as.character(1363821605424526000))になります1363821605424526080

なぜ、どうすればこれを防ぐことができますか?

4

1 に答える 1

3

1 つの解決策は、gmpライブラリ ( GNU Multiple Precisionライブラリ) を使用して、大きな整数で基本的な演算を作成および実行することです...

require(gmp)
as.bigz("1363821605424526000")
#Big Integer ('bigz') :
#[1] 1363821605424526000

"数値の丸めの使用に注意してください。これは、R によってデータ型として解析されるのを防ぐためですnumeric。R はもちろん、指定されたデータ構造でこの数値を正確に表現することはできません。型に変換する"前に、R を文字変数として扱うようにします。as.bigzbig integer

as.bigz("1363821605424526000") + 1
#Big Integer ('bigz') :
#[1] 1363821605424526001

as.bigz("1363821605424526000")^3
#Big Integer ('bigz') :
#[1] 2536720967038413127881466345733319337545403576000000000
于 2013-11-01T10:03:19.597 に答える