3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

{Rmpfr} Rの果てを見る

Last updated at Posted at 2015-11-20

Rの有効桁

R-Tips様より、
options()の中で、
 digits: 数値を出力する際の表示桁数を設定する(デフォルトは7).
 scipen: 指数表現にするか否かの閾値を設定する(デフォルトは 0).
だそうです。

> options()$digits
[1] 7

ほー、そうかそうか。

> 12345678
[1] 12345678

え〜と?8桁の数を書けてるぞ。

# 12桁までは指数表記にならない?
> 123456789012 
[1] 123456789012

# 13桁からは浮動小数点表記。この有効桁はdigitsの値。
> 1234567890123 
[1] 1.234568e+12

何故??

options()$digits の果て

> options(digits=100)
 以下にエラー options(digits = 100) : 
   'digits' のパラメータが不正です: 0...22 が認められています 

[0, 22]だそうですね。
まずは、options(digits=0)にしてみる。

> 1234   # 4桁
[1] 1234

> 12345  # 5桁
[1]1.e+04

ホッホー。
法則性がよく分からない…。

次に、options(digits=22)にしてみる。

> 1234567890123 # 13桁
[1] 1234567890123

おお。頑張っている。

> 123456789012345678901234567 # 27桁
[1] 123456789012345678152597504

> 1234567890123456789012345678 # 28桁
[1] 1.234567890123456850245e+27

ホッホー。.....んん???

> 123456789012345678901234567 # 27桁
[1] 123456789012345678152597504
                      
> 1234567890123456789012345678 # 28桁
[1] 1.234567890123456850245e+27
                     

27桁表記の方は、19桁目が、上では9なのに、下では1
指数表記でも、17桁目から違っていますね。

...ヨォわからん。

options()$scipenの挙動

とりあえず、options(scipen=20)ぐらいにしてみる。

> 123456789012345678901234567 # 27桁
[1] 123456789012345678152597504 # 19桁から不正確
                      
> 1234567890123456789012345678 # 28桁
[1] 1234567890123456850245451776 # 指数表記は回避され、17桁から不正確
                    

嘆息。

{Rmpfr}の挙動

真打ちの登場です。
前回の投稿で紹介した多倍数精度を取り扱うパッケージ。

install.packages("Rmpfr")
library(Rmpfr)

さてさてさて。

> mpfr(12345678901234567890123, 100)
1 'mpfr' number of precision  100   bits 
[1] 12345678901234567741440
                     
> mpfr(12345678901234567890123, 100000)
1 'mpfr' number of precision  100000   bits 
[1] 12345678901234567741440
                     

あれ???

結論

結局、誤差がないのは15桁ぐらい?
という事は、double型と同じじゃん。

指数表記を回避したいだけなら、digitsscipenで、良くね???
{Rmpfr}を使っても、計算精度自体は上がらない。

3
2
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?