Odhlásenie
Späť
HOME
Užívateľ: Firma: [ Zmena osobných nastavení ]                  Štvrtok 02.05.2024
Články  

 

 

 

 

Ako konvertovať parameter typu „Real Number“ na parameter typu „String“?

 

Popis:
Táto technika popisuje metódu konverzie parametra typu „Real Number“ na parameter typu „String“ s využitím funkcie „extract“ v reláciách.

Dôvody:
Konštruktér niekedy potrebuje vytvoriť nejaký parameter, ktorého hodnota je tvorená, resp. sa automaticky tvorí na základe iných parametrov, ciže sa zloží z hodnôt iných parametrov, resp. z niektorých ich častí. Všeobecne sa tento problém dá riešiť použitím funkcie „extract“ v reláciách. Avšak ako sa to správa v prípade, že parametre, z ktorých sa nejaký výsledný parameter skladá sú typu „Real number“?Tu je riešenie:

Predpoklady:
Existuje funkcia „itos“ v reláciách, ktorá sa používa na konverziu parametrov typu Real number na parametre typu String, avšak z tou nevýhodou, že pri tej konverzii nám táto funkcia odstráni aj desatinné miesta za celým číslom a zaokrúhly ho.

Riešenie:
Máme napr. parameter REAL typu „Real number“.
REAL = 987.654
Požadujeme ho prekonvertovať so zachovaním des. miest na parameter STRING typu „String“. Použijeme funkciu „itos“.
STRING = itos(REAL)
Touto reláciou sme vytvorili parameter STRING typu „STRING“ a hodnotou „988“.
/* STRING = „988“ (instead of „987.654“)

Predpokladajme, že vieme, aký parameter typu Real number chceme prekonvertovať a vieme aj, aký počet des. miest chceme zachovať.
Počet des. miest, ktoré chceme zachovať, popíšeme v parametry DEC, ktorý je typu Real number. V našom prípade chceme zachovať 2 desatinné miesta.
DEC = 2

V prípade, že poznáme počet des. miest (v našom prípade 2), ktoré nechceme presiahnuť, forma našej relácie bude:
c = itos(REAL * 10^DEC)
/* c = 98765; kde násobením 10^DEC sme posunuli des. miesta o 2 miesta doprava a pomocou itos() sme prekonvertovali na typ „String“. Parametrom DEC popisujeme počet des. miest, ktoré chceme zanechať. Čiže,, ak by sme chceli zanechať až 3 des. miesta, tak parameter DEC má hodnotu 3. Vtedy by sme dosiahli (v prípade DEC=3) hodnotu parametra c=987654.

Teraz už len potrebujeme zložiť náš parameter STRING tak, aby sme mali zachované aj des. miesta. Použijeme funkciu „extract“.
STRING=extract(c,1,3)+"."+extract(c,4,3)
Touto reláciou sme vytvorili parameter STRING typu „STRING“, ktorý je tvorený extrahovaním a zložením z parametru c z dvoch častí, 1.časť je tvorená znakmi 1-3, (t.z. 987), následne druhá časť je tvorená znakmi 4-6, (t.z. 654) a medzi týmito dvoma zložkami bola vložený oddeľovač des. miest (t.z. znak „.“). Ako znak oddeľovača mohlo byť použité čokoľvek, napr. aj „,“.

Súvislosť:
Existuje tu vzájomná súvisloť medzi parametrami DEC a STRING (už pri extrahovaní). Keby ste hodnotu parametra DEC zmenili na 2 a reláciu ponechalo rovnakú, parameter STRING bude mať hodnotu nie 987.65, ako by ste možno čakali, ale len 987.. Je to preto, lebo v relácií je nadefinované, že druhá časť parametru c sa má skladať zo znakov 4-6, ale pri DEC=2 má dokopy len 5 znakov. Keď by ste naozaj chceli vytvoriť parameter STRING=987.65, tak musíte zmeniť nielen hodnotu DEC=2, ale aj v relácií musíte zmeniť druhú časť na extract(c,4,2), čiže upravená relácia by mala tvar:

STRING=extract(c,1,3)+"."+extract(c,4,2)

a parameter STRING by mal hodnotu 987.65

 

Copyright © 2004 - 2024 IPM SOLUTIONS, s.r.o. Všetky práva vyhradené.