Arvojen muotoilu

Näitä sääntöjä käytetään kaikkialla missä tarvitaan reaalilukujen muotoilua (esimerkiksi Tekstiformaatti, alkutiedostot, otsikkotiedostot ja Pisteen esitys). Käytettävissä on myös toiminto muotoilun rakentamista varten.

Formaattimäärittely sisältää mahdollisen aste/minuutti/sekunttiformaatin sekä desimaalipyöristyksen käsittelyn. Nämä määrittelyt toimivat kaikille koordinaattiarvoille ja myös numeerisille ominaisuustiedoille. Jos määrittely alkaa +-merkillä, kirjoitetaan myös positiivisille arvoille etumerkki. Merkillä = voidaan kirjoittaa luvun itseisarvo.

Desimaaliosio alkaa pisteellä ja kertoo kirjoitettavien desimaalien määrän. Oletuksena kirjoitettava tieto pyöristetään normaalien matemaattisten pyöristyssääntöjen mukaan. Pyöristysmerkit < ja > määrittelyn lopussa pyöristävät alas- tai ylöspäin. Negatiivinen desimaalien määrä pyöristää lähimpään kymmenen potenssiin. Pelkkä piste käyttää muuntimen desimaaliasetusta.

Piste myös pakottaa ominaisuustiedon numeeriseksi. Tällöin se kirjoitetaan normaalien desimaaliasetusten mukaan ja luettaessa mahdollinen desimaalierottimena oleva pilkku muutetaan pisteeksi. Puuttuvat numeeriset arvot kirjoitetaan oletuksena nolliksi ja tyhjän numeerisen arvon lukeminen luo ominaisuuden arvolla nolla. Jos tyhjät arvot halutaan ohittaa, voidaan formaattimäärittely aloittaa merkillä _. Tällöin puuttuvat numeeriset ominaisuudet kirjoitetaan tyhjänä ja luettaessa tyhjistä arvoista ei luoda ominaisuutta.

Vaikka ominaisuudet ovat sisäisesti talletettuna tekstinä kiinteällä desimaalimäärällä, voidaan ne silti kirjoittaa ulos vähemmillä desimaaleilla. Luettaessa desimaalimäärittelyllä ei ole merkitystä koordinaateille, vaan kaikki desimaalit luetaan aina. Ominaisuuksiin luetut arvot talletetaan määrittelyn mukaisilla desimaaleilla.

Yksikkömuunnokset

Käytettävissä olevat yksikkömuunnokset:

MerkkiKerroinEsimerkkiTulosKuvaus
d1$ANGLE%dd.31.234Aste
e10^E$VALUE%e3.11234.5Eksponentti E
f180/200$ANGLE%f.31.234Aste gooneista
g200/180$ANGLE%g.31.234Gooni asteista
h1$TIME%hh:mm:ss12:34:56Tunti
k1$SCALE%k.01:123MIttakaava
m60$ANGLE%ddmm.30103.456Minuuttiosa
o1000$VALUE%o.0234.5‰Promille
p100$VALUE%p.123.4%Prosentti
q1/X$SLOPE%q.11:23.4Suhdeluku
rPI/180$ANGLE%r5.0123456Radiaani asteista
s3600$ANGLE%ddmmss.3010305.678Sekunttiosa
v1/X*1000$SLOPE%v.1123.4Pystysuhdeluku mm/m

Numeerinen arvo voidaan kertoa prosenteiksi määreellä p tai promilleiksi määreellä o. Prosentti- tai promillemerkki lisätään automaattisesti luvun perään. Määreellä q voidaan numeerinen arvo esittää suhdelukuna. Esitysmuoto riippuu siitä, onko alkuperäinen arvo pienempi vai suurempi kuin 1. Arvoa 1 pienemmät näytetään muodossa 1:x ja arvoa 1 suuremmat muodossa X:1. Määreellä k voidaan arvo esittää mittakaavana lisäämällä sen alkuun 1: (esim. 2000 -> 1:2000).

Määreellä e voidaan arvo kertoa kymmenen potenssilla. Tätä voidaan käyttää yksikön etuliitteellä kertomiseen. Joitain esimerkkejä:

FormaattiKerroinEsimerkkiTulosKuvaus
e31000$VALUE%e3.11234.5Millimetri
e2100$VALUE%e2.1123.4Senttimetri
e-30.001$VALUE%e-3.30.123Kilometri

Näitä määrittelyjä voidaan käyttää myös lukemiseen jolloin niiden vaikutus on päinvastainen. Lukeminen formaatilla %p olettaa alkuperäisen arvon olevan prosentteja ja jakaa sen sadalla. Vastaavasti lukeminen formaatilla %e3 muuntaa millimetrit metreiksi jakamalla arvon tuhannella.

Esimerkkejä:

X%.3                123456.789    Kirjoitus kolmella desimaalilla
X%+.3              +123456.789    Etumerkki myös positiivisille arvoille
X%=.3               123456.789    Itseisarvo
X%.2                 123456.79    Normaali pyöristys kahdella desimaalilla
X%.2<                123456.78    Pyöristys alaspäin kahdella desimaalilla
X%.-2                   123500    Pyöristys negatiivisilla desimaaleilla
$SCALE%.               123.456    Numeerinen ominaisuus oletusdesimaaleilla
$SCALE%k.0               1:123    Numeerinen ominaisuus mittakaavana
$VALUE%.1"%"              0.2%    Arvo prosentteina
$VALUE%p.1               23.4%    Arvo kerrottuna prosenteiksi
$VALUE%o.1              234.5‰    Arvo kerrottuna promilleiksi
$VALUE%e3.1              234.5    Arvo kerrottuna tuhannella
$SLOPE%q.1              1:23.4    Arvo suhdelukuna
$SLOPE%q.1              43.2:1    Arvo suhdelukuna
$MISSING%.0                  0    Puuttuva numeerinen ominaisuus nollana
$MISSING%_.0                      Puuttuva numeerinen ominaisuus tyhjänä
$CRD_B@14%+.2          +123.45    Laskentatulosominaisuus formatoituna

Asteet, minuutit ja sekunnit

Aste-, minuutti- ja sekunttiosien formatointi määritellään pienillä kirjaimilla d, m ja s sekä mahdollisilla erotinmerkeillä niiden välissä. Määrittely voi sisältää näiden eri yhdistelmiä, mutta osien järjestyksen on aina oltava d-m-s eli asteet, minuutit ja sekunnit. Yksiköitä voidaan jättää pois, mutta minuuttien yli ei voi hypätä (yhdistelmä ds ei ole sallittu). Jos kirjoitettava arvo on negatiivinen, kirjoitetaan minuutit ja sekunnit silti aina ilman etumerkkiä. Kunkin yksikön leveys määritetään kirjainten määrällä: d, dd, ddd, m, mm, s tai ss. Lyhyemmät arvot täytetään vasemmalta nollilla. Yksiköiden välissä oleva erotin voi olla melkein mikä tahansa yksittäinen merkki. Jos erotinmerkillä on muissa formaattimäärittelyissä jokin erikoismerkitys (lainaus- ja heittomerkit, tietueiden erotinmerkit), on sen edelle laitettava hattumerkki (^). Välilyönti erottimena voidaan antaa myös alaviivalla (_).

Arvo voidaan muuntaa radiaaneiksi kirjaimella r tai gooneiksi kirjaimella g. Radiaanit voidaan myös kertoa kymmenen potenssilla lisäämällä kirjaimen r perään exponentti (esim. r4 kerroin on 10000). Kirjaimilla - ja ¤ voidaan arvo pakottaa joko välille -PI - PI tai 0 - 2xPI.

Esimerkkejä:

X%r.5                  1.23456    Arvo radiaaneina ja desimaaleina
X%r5.0                  123456    Arvo radiaaneina kerrottuna arvolla 100000.0
X%g.4                   1.2345    Arvo gooneina ja desimaaleina
X%-g.4                 -1.2345    Arvo gooneina välillä -PI - PI
X%¤g.4                  1.2345    Arvo gooneina välillä 0 - 2xPI
X%d.3                    1.234    Asteet desimaaleilla, sama kuin %.3
X%d.0<                       1    Pelkkä asteosa
X%dd.0<                     01    Asteosa kahdella merkillä
X%ddd.0<                   001    Asteosa kolmella merkillä
X%m.0<                       3    Pelkkä minuuttiosa
X%ss.0<                     05    Sekunttiosa kahdella merkillä
X%ddmm.3              0103.456    Asteosa ja minuutit desimaaleilla (NMEA)
X%ddmmss.3          010305.678    Asteosa, minuuttiosa ja sekunnit
X%d_m_s.3            1 3 5.678    Välilyönti erottimena
X%d°m^'s^".3        1°3'5.678"    Erottimina °, ' ja "
X%dd°mm^'ss^".3  01°03'05.678"    Erottimina °, ' ja " sekä täyttö nollilla

Vakioteksti

Määrittelyn perässä voidaan antaa vakioteksti lainausmerkeissä tai heittomerkeissä. Lainausmerkeissä annettu vakioteksti voi sisältää heittomerkkejä ja päinvastoin. Oletuksena tämä vakioteksti kirjoitetaan muotoiltavan arvon perään. Vaihtoehtoisesti voidaan &-merkillä määrätä missä kohtaa vakiotekstiä arvo sijaitsee. Esimerkiksi vakioteksti "dx=&" kirjoittaa tekstin ennen arvoa ja vakioteksti "(&)" molemmin puolin arvoa. Vakioteksti voi sisältää myös pystyviivalla merkittyjä rivinvaihtoja.

Esimerkkejä:

$VALUE%"%"              1.234%    Yksikkö arvon perässä
$VALUE%.1"%"              1.2%    Yksikkö arvon perässä
$VALUE%.1"m"              1.2m    Yksikkö arvon perässä
$VALUE%.1" m"            1.2 m    Yksikkö arvon perässä
$VALUE%.1"& m"           1.2 m    Yksikkö arvon perässä
$VALUE%.1"value=&"   value=1.2    Otsikko ennen arvoa
$VALUE%.1"(&)"           (1.2)    Arvo suluissa
$VALUE%.1"'&'"           '1.2'    Arvo heittomerkeissä
$VALUE%.1'"&"'           "1.2"    Arvo lainausmerkeissä
$VALUE%.1"value|& m"     value    Monirivinen teksti
                         1.2 m