auditR
浮動小数点に注意
Rに限らずExcelなどでも言えることだが、一見して丸く見える数字も浮動小数点によって誤差を持っている。
たとえば、
> print(3/10, digits=20) [1] 0.2999999999999999889
> print(0.4, digits=20) [1] 0.4000000000000000222
のように。
つまり、実数型を扱う場合には完全に一致するかどうかはFALSEが返ってくる可能性が高い。
このようなとき、signif()を使うとdigits=で指定した小数点位で丸める。
> signif(1.23456789, digits=7) [1] 1.234568
round()との挙動の違いに注意。round()は小数点、signif()は整数を含む上からの桁数。
> signif(1.23456789, digits=6) [1] 1.23457 > round(1.23456789, digits=6) [1] 1.234568
fpCompareパッケージを使う
比較演算子%==%を用いると、浮動小数点同士を比較した結果が返される。
> (0.1+0.2) == 0.3 [1] FALSE > (0.1+0.2) %==% 0.3 [1] TRUE
Last updated 2022-11-15 | auditR (c) N.Nawata