Datový typ float!

1. Úvodem

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!.

2. Vytvoření

Hodnoty float! lze vytvořit literálovou syntaxí nebo při runtime použitím konstruktoru make nebo konverzí to.

3. Literálová skladba

Žá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

123,4

Poznámka
Formátovaná 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.4

Jednoduchý 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.4

Jednoduchý 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

3.1. Vytvoření ve fázi runtime

  • 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á funkcím make nebo to, musí obsahovat dvě čísla. Výsledkem bude první číslo násobené desítkou, umocněnou druhým číslem: first-number * (power 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

4. Komparace

Pro hodnotu typu float! lze použít všechny komparátory: =, ==, <>, >, <, >=, <=, =?. Navíc jsou podporovány funkce min a max.

5. Konverze

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 první číslo násobené desítkou, umocněnou druhým číslem: first-number * (power 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}
Poznámka
Při konverzi čísla typu float na char nebo integer jsou odvrženy všechny číslice za desetinnou čárkou. Žádné 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.8

6. Testování hodnot

K ověření, zda hodnota je typu float! použijeme funkci float?.

>> float? 123.4
== true

Funkce type? vrací datový typ zadané hodnoty.

>> type? 123.4
== float!

7. Předdefinovaná slova

7.1. Funkce

acos, asin, atan, atan2, cos, distance?, float?, sin, sqrt, tan, to-float

7.2. Nativa

arccosine, arcsine, arctangent, arctangent2, as-pair, cosine, exp, log-10, log-2, log-e, sine, square-root, tangent

7.3. Operátory

**

results matching ""

    No results matching ""