0

これらの 2 つの文字があり、"as.numeric" 関数はそれらに対して同じように機能しません。なぜこれが起こっているのか、誰かが私を助けることができますか?

オプション(桁数=22)

a="27"

as.numeric(a)

[1] 27.0000000000000000000

a="193381411288395777"

as.numeric(a)

[1] 193381411288395776.0000

2 番目のケースでは、最後の桁が「7」ではなく「6」であることがわかります。基本的に、「as.numeric」関数は、2 番目のケースの数値から 1 単位を減らします。

どんな助けでも大歓迎です。

4

2 に答える 2

2

int64パッケージを使用します。

library(int64)
> as.int64("193381411288395777")
[1] 193381411288395777
于 2012-07-19T20:09:24.840 に答える
2

正確な数の表現の限界について学ぶ必要があります。Rはそれが何を持っているかを教えてくれます:

R> .Machine
$double.eps
[1] 2.22045e-16

$double.neg.eps
[1] 1.11022e-16

$double.xmin
[1] 2.22507e-308

$double.xmax
[1] 1.79769e+308

$double.base
[1] 2

$double.digits
[1] 53

$double.rounding
[1] 5

$double.guard
[1] 0

$double.ulp.digits
[1] -52

$double.neg.ulp.digits
[1] -53

$double.exponent
[1] 11

$double.min.exp
[1] -1022

$double.max.exp
[1] 1024

$integer.max
[1] 2147483647

$sizeof.long
[1] 8

$sizeof.longlong
[1] 8

$sizeof.longdouble
[1] 16

$sizeof.pointer
[1] 8

R>
于 2012-07-19T20:03:29.650 に答える