Jarek Statinowy

Jarek Statinowy Z zapałem do pracy

Temat: Precyzja w oknie konsoli

Witam

Mam taki problem = zagwostkę

Wpisując liczbę a następnie ją wypisując dostaje
a=187338.921289337
> a
[1] 187338.9

W oknie Environment jest dokładna wartość, ale co wpisać by w Konsoli także pokazywało mi dokładną wartość.

Co ciekawe
 b=15.87
> b
[1] 15.87

pokazuje dokładnie a co jeszcze ciekawsze u kolegi pokazało 15.9

Więc od czego to zależy

Temat: Precyzja w oknie konsoli

Od tego, ile cyfr do wyświetlenia jest ustawionych w opcjach. Obowiązkową lekturą jest wszystko co dotyczy "R floating point", np.: http://www.burns-stat.com/documents/tutorials/impatien...

Domyślnie ustawione jest 7 cyfr.
options()$digits
[1] 7

Jednak podana liczba ma ich znacznie więcej.
nchar(as.character(a))-1
[1] 15

Dlatego R wyświetlił tylko 7 pierwszych
a
[1] 187338.9
substr(as.character(a), 1, 7+1) # +1 ze względu na separator dziesiętny
[1] "187338.9"

Zwiększamy teraz liczbę wyświetlanych cyfr do 10
options(digits=10)
a
[1] 187338.9213
substr(as.character(a), 1, 10+1) # +1 ze względu na separator dziesiętny
[1] "187338.9212"

Skąd różnica? Ponieważ jeśli cyfr do wyświetlenia jest więcej, R zaokrągla wynik. Zaokrąglanie liczb to ogólnie nietrywialne zagadnienie i jest mu poświęcone sporo literatury. W R stosowane jest zaokrąglanie statystyczne (bankierskie), będące częścią standardu IEEE 754 (IEEE Standard for Floating-Point Arithmetic).
https://stat.ethz.ch/R-manual/R-devel/library/base/html...



Wyślij zaproszenie do