Explicita värden

Explicita värden är konstanta värden som ligger till grund för alla värden som skickas till FormCalc för bearbetning. Det finns två övergripande typer av explicita värden: tal och strängar.

Explicita tal

Explicita tal består huvudsakligen av siffror. Ett eller flera av följande tecken brukar ingå: ett heltal, ett decimalkomma, decimaler, exponenttecken (”e” eller ”E”) och ett exponentvärde som kan föregås av +/-. Nedan följer exempel på explicit uttryckta tal:

  • -12

  • 1.5362

  • 0.875

  • 5.56e-2

  • 1.234E10

Det är möjligt att utelämna antingen heltalet eller decimalerna, men inte båda. I decimaldelen kan du dessutom välja att utelämna decimalpunkten eller exponenten, men inte båda.

Alla explicita tal konverteras internt till 64-bitars binära IEEE-värden (Institute of Electrical and Electronics Engineers). IEEE-värden kan dock bara representera en ändlig mängd tal, vilket innebär att vissa värden inte finns representerade som binära decimaltal. På samma sätt finns det vissa värden, t ex 1/3, som inte har en exakt motsvarighet som decimaltal (decimalvärdet skulle behöva ett oändligt antal decimaler för att vara exakt).

Värden som inte har någon binär decimal motsvarighet är normalt explicita tal med fler än 16 signifikanta siffror före exponenten. FormCalc avrundar värdena till närmaste giltiga 64-bitars IEEE-värde. Ta t ex värdet:

    123456789.012345678

som avrundas till (närmaste) värdet:

    123456789.01234567

Ett annat exempel är följande explicita tal:

    99999999999999999 

som avrundas till (närmaste) värdet:

    100000000000000000

Detta kan ibland ge oväntade resultat. FormCalc tillhandahåller en funktion, Round, som returnerar ett givet tal avrundat till ett givet antal decimaler. När det givna talet ligger exakt mellan två tal avrundas det till allt annat än noll. Talet avrundas uppåt om det är positivt och nedåt om det är negativt. I följande exempel:

    Round(0.124, 2)

returnerar 0.12,

och

    Round(.125, 2)

värdet 0,13.

Därmed kunde man förvänta sig följande:

    Round(0.045, 2)

värdet 0.05.

Enligt IEEE 754-standarden approximeras det explicita talet 0,045 till 0,0449999999999999. Approximationen ligger närmare 0,04 än 0,05. Därför returnerar

    Round(0.045, 2)

värdet 0.04.

Detta i enlighet med IEEE 754-standarden.

64-bitars IEEE-värden har stöd för återgivningar som NaN (not a number), +Inf (positive infinity) och -Inf (negative infinity). FormCalc har inte stöd för detta. Uttryck som använder NaN, +Inf eller -Inf genererar ett undantagsfel som skickas vidare till resten av uttrycket.

Explicita strängar

En explicit sträng är en följd av Unicode-tecken omgiven av citattecken. Exempel:

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

Den explicita strängen "" anger inga tecken alls och kallas tomma strängen.

Om du vill använda citattecken (") i en explicit sträng måste du infoga två citattecken. Exempel:

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

Alla Unicode-tecken har en motsvarande teckensträng på sex tecken bestående av \u följt av fyra hexadecimala siffror. Det är möjligt att skriva vilket tecken som helst i en explicit sträng, inklusive styrtecken, genom att använda motsvarande Unicode-sekvens. Exempel:

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