as.double
Vektory s přesností typu double
double {base} | Dokumentace R v češtině |
Popis
Vytvořit, skonvertovat na, nebo otestovat, jestli to je vektor s přesností typu double.
Použití
double(length = 0)
as.double(x, ...)
is.double(x)
single(length = 0)
as.single(x, ...)
Argumenty
length |
Nezáporný integer specifikující požadovanou délku. Hodnoty typu double budou konvertovány na integer: poskytnutí argumentu délky jiné než jedna je chyba. |
x |
objekt, který má být konvertován nebo testován. |
... |
další argumenty přenesené na jiné metody nebo z jiných metod. |
Detaily
double
vytvoří vektor specifikované délky s přesností typu double. Všechny elementy vektoru se rovnají 0
. Je totožný s typem numeric
.
as.double
je generická funkce. Je totožná s as.numeric
. Metody by měly vrátit objekt základního typu "double"
.
is.double
je test typu double.
R nemá datový typ s přesností "single". Všechna reálná čísla jsou uložena ve formátu double. Funkce as.single
a single
jsou totožné s as.double
a double
, kromě toho, že nastavují atribut Csingle
, který se používá v rozhraní .C
a .Fortran
, a jsou určeny pouze pro použití v tomto kontextu.
Hodnota
double
vytvoří vektor specifikované délky s přesností double. Všechny elementy vektoru se rovnají 0
.
as.double
se pokouší konvertovat jeho argument na typ double: tak jako as.vector
zbavuje atributů včetně názvů. (Aby bylo zajištěno, že objekt je typu double bez odstranění atributů, použijte storage.mode
.) Znakové řetězce, které obsahují volitelnou mezeru, po které následuje buď desítková reprezentace nebo hexadecimální reprezentace (začínající 0x
nebo 0X
) můžou být konvertovány, stejně jako zvláštní hodnoty jako například "NA"
, "NaN"
, "Inf"
a "infinity"
, bez ohledu na případ.
as.double
pro faktory produkuje kódy, které jsou podkladem faktorových úrovní, nikoliv numerické reprezentace štítků, viz také factor
.
is.double
vrací TRUE
nebo FALSE
v závislosti na tom, zda je jeho argument typu double anebo ne.
Hodnoty s přesností double
Všechny platformy R musí pracovat s hodnotami, které odpovídají standardu IEC 60559 (také známému jako IEEE 754). Tohle v podstatě pracuje s přesností 53 bitů a reprezentuje do téhle přesnosti rozsah absolutních hodnot od 2e-308 do 2e+308. Má také speciální hodnoty >NaN
(mnoho z nich), plus a mínus nekonečno a plus a mínus nula (ačkoli R se chová jako by byli stejné). Existují také denormální(izované) (nebo subnormální) čísla s absolutními hodnotami nad nebo pod výše uvedeným rozsahem, ale jsou reprezentovány s menší přesností.
Viz .Machine
pro přesné informace o těchto omezeních. Vezměte na vědomí, že to, jako jsou nakonec čísla s přesností double zpracovávány závisí nakonec na CPU/FPU a kompilátoru.
V dokumentu IEEE 754-2008/IEC60559:2011 se nazývá formát ‘binary64’.
Poznámka k názvům
Je historickou anomálií, že R má dva názvy pro své vektory s plovoucí desetinnou čárkou, double
a numeric
(a předtím real
).
double
je název typu. numeric
je název mode a také implicitní třídy. Jako formální třídu S4 použijte "numeric"
.
Potenciální zmatek spočívá v tom, že R používal režim "numeric"
, když myslel ‘double nebo integer’, což je v rozporu s použitím S4. Tak is.numeric
testuje režim, nikoliv třídu, ale as.numeric
(který je totožný s as.double
) konvertuje do třídy.
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
https://en.wikipedia.org/wiki/IEEE_754-1985, https://en.wikipedia.org/wiki/IEEE_754-2008, https://en.wikipedia.org/wiki/Double_precision, https://en.wikipedia.org/wiki/Denormal_number.
http://754r.ucbtest.org/ pro odkazy na informace o standardech.
Viz také
integer
, numeric
, storage.mode
.
Příklady
is.double(1) all(double(3) == 0)