Hodnoty typu float! jsou 64-bitové pozitivní nebo negativní čísla, která obsahují desetinnou čárku.
Mají rozsah od -1.7E+308 do +1.7E+308 a při přetečení vracejí #INF.
Dělení nulou vrací 1.#NaN
Typ float! je členem typesetů: immediate!, scalar! a number!.
Hodnoty float! lze vytvořit literálovou syntaxí nebo při runtime použitím konstruktoru make nebo konverzí to.
Žádná nebo více číslic, následovaných tečkou, následovanou jednou nebo více číslicemi. Místo tečky lze použít čárku:
123,4
|
Poznámka
|
Vytvářená hodnota normalizuje desetinnou čárku na desetinnou tečku coby označení desetinného čísla. |
Znak + nebo - bezprostředně před první číslicí označuje pozitivní nebo negativní hodnotu typu float!.
+123.4
-123.4
Předcházející nuly jsou ignorovány.
>> +00123.4
== 123.4Jednoduchý apostrof ' se používá jako místní oddělovač hodnot u dlouhých čísel a může se použít kdekoli po první číslici.
>> 60'000'123.4
== 60000123.4Jednoduchý apostrof ' bezprostředně před nabo za desetinnou tečkou vyvolá chybové hlášení.
>> 60'000'123'.4
*** Syntax Error: invalid integer! at "60'000'123'.4"
*** Where: do
*** Stack: load-
Literálová syntaxe
>> 100.1 == 100.1
-
Konstruktor
make>> make float! 1 == 1.0
-
Transformace
to>> to float! 42 == 42.0
|
Poznámka
|
Hodnota typu any-list!, zadávaná do funkce make či to, musí obsahovat dvě čísla. Výsledkem bude first-number * (10 ** second-number).
|
-
block>> make float! [2 3] == 2000.0 >> to float! [4 2] == 400.0
-
paren>> make float! quote (2 3) == 2000.0 >> to float! quote (4 2) == 400.0
-
hash>> list: make hash! [2 3] == make hash! [2 3] >> to float! list == 2000.0 >> list: make hash! [4 2] == make hash! [4 2] >> to float! list == 400.0
Pro hodnotu typu float! lze použít všechny komparátory: =, ==, <>, >, <, >=, <=, =?. Navíc jsou podporovány funkce min a max.
Hodnotu float lze při runtime konvertovat na any-list!, binary!, char!, integer!, string! nebo time! s použitím konverze to.
Hodnota typu any-list musí obsahovat dvě čísla. Výsledkem bude first-number * (10 ** second-number).
>> to float! [4 2] ; 4 * (power 10 2)
== 400.0-
to binary!interpretuje prvních 8 bajtů jako desetinné číslo (floating point number). Je-li k dispozici méně než 8 bajtů, jsou předsazeny bajty #{00}.>> to binary! 42.3 == #{4045266666666666}
-
Při konverzi na
char!nebointeger!jsou číslice za desetinnou čárkou ignorovány. Zaokrouhlení se neprovádí.>> to char! 123.4 == #"{" >> to char! 123 ; equivalent, since .4 is discarded == #"{" >> to integer! 123.4 == 123
-
to string!>> to string! 123.4 == "123.4"
-
to time!vrací počet sekund a milisekund>> to time! 42.7 == 0:00:42.7
Jsou-li ve výrazu kombinovány typy float! a integer!, je výsledek typu float!.
>> 123.4 * 42
== 5182.8K ověření, zda hodnota je typu float! použijeme funkci float?.
>> float? 123.4
== trueFunkce type? vrací datový typ zadané hodnoty.
>> type? 123.4
== float!