Literals

Literals zijn constante waarden die de basis vormen van alle waarden die aan FormCalc worden doorgegeven om te worden verwerkt. De twee algemene typen literals zijn getallen en tekenreeksen.

Literals van het type getal

Een literal van het type getal is een reeks tekens, meestal cijfers, die bestaat uit één of meer van de volgende lettertekens: geheel getal, decimaalteken, breukdeel, indicator voor een exponent ('e' of 'E') en een optionele exponentwaarde. Hieronder volgen voorbeelden van literals van het type getal:

  • -12

  • 1.5362

  • 0.875

  • 5.56e-2

  • 1.234E10

Het is mogelijk om een geheel getal of een breukdeel van een literal van het type getal weg te laten, maar niet beide. Verder kunt u binnen het breuksegment de decimale punt of de exponentwaarde weglaten, maar niet beide.

Alle literals van het type getal worden intern geconverteerd naar 64-bits binaire IEEE-waarden (Institute of Electrical and Electronics Engineers). IEEE-waarden kunnen slechts bestaan uit een beperkte hoeveelheid cijfers, waardoor bepaalde waarden niet als een binaire breuk kunnen worden uitgedrukt. Dit is vergelijkbaar met het feit dat bepaalde waarden, zoals 1/3, niet exact kunnen worden uitgedrukt als een decimale breuk (de decimale waarde zou een oneindig aantal decimale posities moeten hebben om geheel nauwkeurig te zijn).

De waarden die niet als een binaire breuk kunnen worden uitgedrukt, zijn in het algemeen literals van het type getal met meer dan 16 significante cijfers voorafgaand aan hun exponent. FormCalc rondt deze waarden af tot de dichtstbijzijnde reële 64-bits IEEE-waarde volgens de IEEE-norm. De waarde:

    123456789.012345678

afgerond op de (dichtstbijzijnde) waarde:

    123456789.01234567

In een tweede voorbeeld echter, wordt deze literal van het type getal:

    99999999999999999 

afgerond op de (dichtstbijzijnde) waarde:

    100000000000000000

Dit gedrag kan soms leiden tot verrassende resultaten. FormCalc levert een functie, Round, die een bepaald getal retourneert dat wordt afgerond tot een bepaald aantal cijfers achter de komma. Wanneer het bepaalde getal zich exact halverwege tussen twee reële getallen bevindt, wordt het niet op nul afgerond. Het getal wordt naar boven afgerond als het positief is en naar beneden als het negatief is. In het volgende voorbeeld:

    Round(0.124, 2)

retourneert 0.12

and

    Round(.125, 2)

retourneert 0.13.

Op grond hiervan kan het volgende worden verwacht:

    Round(0.045, 2)

retourneert 0.05.

In de IEEE-norm 754 wordt echter aangegeven dat de literal van het type getal 0,045 moet worden benaderd tot 0,0449999999999999. Deze benadering komt dichter bij 0.04 dan bij 0.05. Op grond daarvan wordt met

    Round(0.045, 2)

de waarde 0.04 geretourneerd.

Dit komt ook overeen met de IEEE-norm 754.

64-bits IEEE-waarden ondersteunen afbeeldingen als NaN (geen getal), +Inf (positief oneindig) en -Inf (negatief oneindig). FormCalc ondersteunt deze niet en expressies die evalueren naar NaN, +Inf of -Inf hebben een foutuitzondering tot gevolg, die wordt overgedragen naar de rest van de expressie.

Literals van het type tekenreeks

Een literal van het type tekenreeks is een opeenvolging van willekeurige Unicode-tekens tussen aanhalingstekens. Bijvoorbeeld:

    "The cat jumped over the fence." 
    "Number 15, Main street, California, U.S.A"

De literal van het type tekenreeks "" bevat geen tekens en wordt een lege tekenreeks genoemd.

Als u een aanhalingsteken (") in een literal van het type tekenreeks wilt insluiten, moet u twee aanhalingstekens invoegen. Bijvoorbeeld:

    "The message reads: ""Warning: Insufficient Memory"""

Bij alle Unicode-tekens hoort een escapereeks van zes tekens, die bestaat uit \u gevolgd door vier hexadecimale getallen. Alle tekens in een literal van het type tekenreeks, inclusief besturingstekens, kunnen worden uitgedrukt met behulp van hun overeenkomstige Unicode-escapereeks. Bijvoorbeeld:

    "\u0047\u006f\u0066\u0069\u0073\u0068\u0021" 
    "\u000d" (carriage return) 
    "\u000a" (newline character)