# 2進数から10進数への変換 # 任意精度用のパッケージ library(Rmpfr) # 精度(ビット) pbit <- 70 # 2進数(文字列) x <- "1001.0100110011001100110011001100110011001100110011010" # xを整数部と小数部に分ける intdec <- unlist(strsplit(x, ".", fixed = TRUE)) # 整数部の桁数 idigit <- nchar(intdec[1]) # 整数部と小数部を結合して1文字ずつに分割 a <- unlist(strsplit(paste0(intdec), "")) # 1桁ずつ計算して足し合わせ r <- 0 for (i in 1 : length(a)) { r <- mpfr(r + strtoi(a[i], 2) * 2 ^ (idigit - i), pbit) } # 10進数の出力 print(r, digits = 22)