Skip to content

Latest commit

 

History

History
227 lines (144 loc) · 3.86 KB

float.adoc

File metadata and controls

227 lines (144 loc) · 3.86 KB

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

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

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

**