Prevod čísla na text
Ako sme si sľúbili minule, dnes si naprogramujeme makro pre prevod čísla na text. Skôr, ako sa pustíme do jeho písania, musíme previesť podrobnejšiu analýzu tejto problematiky, pričom sa budeme opierať o pravidlá slovenského pravopisu (vzhľadom na podobnosť jazyka si čitatelia z Českej republiky následne určite dokážu prispôsobiť tieto podmienky na český pravopis).
Z hľadiska programovania môžeme číslovky rozdeliť do nasledujúcich skupín:
Číslovky do 10 – nula, jedna, …, deväť.
Číslovky od 10 do 20 – desať, jedenásť, …, devätnásť.
Číslovky od 20 do 50 (prípona „dsať“) – dvadsať, tridsať, štyridsať.
Číslovky od 50 do 100 (prípona „desiat“) – päťdesiat, šesťdesiat, … , deväťdesiat.
Stovky – sto, dvesto, …, deväťsto.
Vyššie rády – tisíc, dvamilióny, päťmimiliárd, …
Pozrime sa teraz na jednotlivé skupiny trochu podrobnejšie. Pri číslovkách do desať sa musíme osobitne zamerať na číslovky jedna a dva. Obidve sa skloňujú podľa toho, pred čím sú uvedené – jedenmilión, jednamiliarda, dvamilióny, dvemiliardy. Číslovka jedna a dva sa však neskloňuje v zložených číslach (t.j. dvadsaťjedenmiliónov, dvadsaťjedenmiliárd, tridsaťdvamiliárd) a okrem toho sa číslovka jedna zvyčajne neuvádza pred stovkami a vyššími rádmi, t.j. píšeme obvykle sto, tisíc a nie jednosto, jedentisíc. Druhý tvar (jednosto, jedenmilión) sa však požaduje v tých prípadoch, keď je dôležité, aby sa nemohlo napísané číslo sfalšovať, t.j. napr. pri peňažných poukážkach. V rámci tejto skupiny ešte musíme spomenúť číslo nula, ktoré sa vypisuje iba vtedy, ak je celé prevádzané číslo 0.
Ďalej sa musíme zamerať na vyššie rádové prípony. Tieto môžeme rozdeliť na dve základné skupiny – „lióny“ (milión, bilión, …) a „liardy“ (miliarda, biliarda, …). Tieto sa skloňujú podľa toho, koľko ich je – jedenmilión, dvamilióny, päťmiliónov a jednamiliarda, dvemiliardy, päťmiliárd. Ak si všimneme, tieto prípony sa skladajú z dvoch častí. Prvá časť „mi“, „bi“, „tri“, … vyjadruje vlastný rád a druhá „lión“, „lónov“, „liárd“, … sa skloňuje podľa množstva (ospravedlňujem sa jazykovedcom za prípadné nesprávne termíny, ale takto sa mi najlepšie vyjadruje problematika, ktorú ideme programovať).
Hoci nie som odborník na jazyky, musím na tomto mieste upozorniť na niektoré väčšie rozdiely medzi slovenčinou a češtinou, aby si aj českí čitatelia mohli naprogramovať svoje verzie makier. Pri číslach od 20 do 100 stačí v slovenčine pridať prípony „dsať“ (dvadsať) a „desiat“ (päťdesiat), kým v češtine to platí iba pre príponu „cet“ (dvacet) a ostatné desiatkové číslice (s príponou „desát“) sa musia vymenovať osobitne (padesát, šedesát, …). Pri stovkách sú rozdiely medzi slovenčinou a češtinou ešte väčšie, pretože v slovenčine existuje iba prípona „sto“ (jednosto, päťsto) kým v češtine sú až štyri –„sto“ (jednosto), „stě“ (dvěstě), „sta“ (třista), „set“ (pětset). Podobný rozdiel je aj v tisícoch, pretože v slovenčine sa používa iba prípona „tisíc“ (dvetisíc, päťtisíc), kým v češtine dve – „tisíc“ (jedentisíc, pěttisíc) a „tisíce“ (dvatisíce).
Ako vidíme, problematika prevodu čísla na text je pomerne zložitá. Pri vlastnom prevode čísla je najvhodnejší ten postup, že sa číslo analyzuje po troch čísliciach, pretože tak sa menia rádové prípony (tisíc, milión, …). Aby sme nestratili potrebný prehľad, naprogramujeme si najprv pre jednotlivé skupiny (číslovky do 10, číslovky od 10 do 100, …) osobitné podprogramy:
function slovne_jedno_cislo(cislo, rad as integer) as string
dim pom_nazov as string
pom_nazov=""
select case cislo
case 1
' Číslovka „jeden“ sa pri rádoch tisíc, milión,... nepíše
if rad=0 then
pom_nazov="jeden"
endif
case 2
' Dvojka sa skloňuje - dva, dvesto, dvetisíc, dvamilióny, dvemiliardy, …
if (rad mod 2)=0 then
pom_nazov="dva"
else
pom_nazov="dve"
endif
case 3
pom_nazov="tri"
case 4
pom_nazov="štyri"
case 5
pom_nazov="päť"
case 6
pom_nazov="šesť"
case 7
pom_nazov="sedem"
case 8
pom_nazov="osem"
case 9
pom_nazov="deväť"
end select
slovne_jedno_cislo=pom_nazov
end function
function slovne_desiatky(jednotky, desiatky as integer) as string
dim pom_nazov as string
pom_nazov=""
select case desiatky
case 1
' desať – devätnásť
select case jednotky
case 0
pom_nazov="desať"
case 1
pom_nazov="jedenásť"
case 2
pom_nazov="dvanásť"
case 3
pom_nazov="trinásť"
case 4
pom_nazov="štrnásť"
case 5
pom_nazov="pätnásť"
case 6
pom_nazov="šestnásť"
case 7
pom_nazov="sedemnásť"
case 8
pom_nazov="osemnásť"
case 9
pom_nazov="devätnásť"
end select
case 2 to 4
' "dsať" – dvadsať až štyridsať
pom_nazov=slovne_jedno_cislo(desiatky,0)+"dsať"+slovne_jedno_cislo(jednotky,0)
case else
' "desiat" – päťdesiat až deväťdesiat
pom_nazov=slovne_jedno_cislo(desiatky,0)+"desiat"+slovne_jedno_cislo(jednotky,0)
end select
slovne_desiatky=pom_nazov
end function
function slovne_stovky(cislo, rad as integer) as string
dim stovky, desiatky, jednotky as integer
dim pom_slovne as string
' z čísla vypreparujeme číslice na mieste jednotiek, desiatok a stoviek
jednotky=cislo mod 10
desiatky=int(cislo/10) mod 10
stovky=int(cislo/100)
pom_slovne=""
' Najprv prevedieme na text jednotky a desiatky (číslo 0 až 99)
if desiatky=0 then
' iba jednotky (čísla 0 až 9)
if stovky=0 then
' celá trojica je číslo 0 až 9 a vtedy sa číslovka 1 a 2 skloňuje podľa rádu
pom_slovne= slovne_jedno_cislo(jednotky,rad)
else
' je to zložené číslo a vtedy sa číslovka 1 a 2 neskloňuje (základný tvar je pre rád 0)
pom_slovne= slovne_jedno_cislo(jednotky,0)
endif
else
' je to číslo od 10 do 99
pom_slovne=slovne_desiatky(jednotky, desiatky)
endif
' teraz k prevedenému dvojcifernému číslu pridáme text o stovkách
select case stovky
case 1
' Pri stovkách sa jednosto píše iba finančne
pom_slovne="sto"+pom_slovne
case 2 to 9
' pridávame príponu "sto" – dvesto až deväťsto
' číslovka 2 sa pri stovkách skloňuje ako pri tisícoch (dvesto – dvetisíc). t.j. tvar pre rád 1
pom_slovne=slovne_jedno_cislo(stovky,1)+"sto"+pom_slovne
end select
slovne_stovky=pom_slovne
end function
function slovne_rady(cislo, rad as integer) as string
' Texty o biliónoch, ... sú teoretické, pretože premenná typu LONG je maximálne 2.147.483.647, t.j.
' dvemiliardystoštyridsaťsedemmiliónovštyristoosemdesiattritisícšesťstoštyridsaťsedem
dim pom_kolko as string
dim predpona as string
predpona=""
pom_kolko=""
select case rad
case 1
predpona="tisíc"
case 2, 3
predpona="mi"
case 4, 5
predpona="bi"
case 6, 7
predpona="tri"
case 8, 9
predpona="kvadri"
end select
if rad=1 then ' tisíce
select case cislo
case 0
pom_kolko=""
case else
pom_kolko=predpona
end select
else
if (rad mod 2)=0 then ' „lióny“ – milión, bilióny, triliónov
select case cislo
case 0
pom_kolko=""
case 1
pom_kolko=predpona+"lión"
case 2 to 4
pom_kolko=predpona+"lióny"
case else
pom_kolko=predpona+"liónov"
end select
else ' „liardy“ – miliarda, biliardy, triliárd
select case cislo
case 0
pom_kolko=""
case 1
pom_kolko=predpona+"liarda"
case 2 to 4
pom_kolko=predpona+"liardy"
case else
pom_kolko=predpona+"liárd"
end select
endif
endif
slovne_rady=pom_kolko
end function
Ako poslednú si teraz naprogramujeme funkciu pre vlastný prevod celého čísla. V prvej verzii nebudeme zatiaľ uvažovať o „finančných“ číslach, t.j. tvare „jedosto“, „jedentisíc a pod.
function daj_slovne(cislo as Long) as string
dim rad as integer ' rády: 1 – tisíc, 2 – milion, 3 – miliarda
dim slovne as string
dim analyza as long
slovne=""
if cislo=0 then
' Osobitne musíme ošetriť číslo „nula“
slovne="nula"
else
rad=0
do while cislo<>0
' z čísla vyberieme posledné tri číslice
analyza=cislo mod 1000
' ktoré prevedieme na text
slovne=slovne_stovky(analyza, rad)+slovne
' číslo zmenšíme o už spracovanú časť
cislo=int(cislo/1000)
' a pridáme text rádu, ktorý budeme spracovávať v ďalšom kroku cyklu
if cislo<>0 then
rad=rad+1
slovne=slovne_rady(cislo mod 1000, rad)+slovne
endif
loop
endif
daj_slovne=slovne
end function
Na budúce: Zdokonaľujeme makro pre prevod čísla na text, alebo ako ho volať v Calcu, Writeri, … čo najpohodlnejšie.
Makrá v OpenOffice.org 3/VI. – Prevod čísla na text
Novinky a inšpirácie
Z nášho blogu
Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.
Oznamy
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?
Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...
Oznamy
Večerná „prestávka“ pre server VIP033
Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...
Novinky
Novinky na Inet.sk (09 / 2026)
Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...
Oznamy
Plánovaná údržba v datacentre (20.09.2026)
Stabilita a nepretržitá dostupnosť vašich webov je pre nás kľúčová. Aby sme tento štandard nielen udržali, ale neustále zvyšovali, naši p...
Podpora klientom
Máte ďalšie otázky?
Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.
Naše výhody
Prečo si nás vybrať?
Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.
Slovenská
firma
Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.
Dlhoročné
skúsenosti
Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.
Spokojní
zákazníci
Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.
Maximálna
bezpečnosť
Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.
Ochotná
podpora
Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.
Férová
cena
Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.
Pravidelné
zálohovanie
Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.
Prehľadný
Admin Panel
Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.
Správa
používateľov
Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.
Vernostné
zľavy
Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.
Bez
obmedzení
Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.
WordPress
na 1 klik
Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.
Referencie
Spokojní zákazníci
Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.
"S firmou Inet.sk sme veľmi spokojní, vrelo ju odporúčam. Profesionálny a ústretový prístup pána Slančíka, seriózne jednanie a rýchla implementácia našich požiadaviek, 100% spokojnosť. Všetky služby od webhostingu cez výrobu stránky až po detailný servis počas chodu tu máme pod jednou strechou."
Ing. Jozef Brázdik
BB motors, s.r.o.
"Mal som možnosť vyskúšať rôzne webhostingy, ale nakoniec som sa rozhodol všetky moje stránky zveriť Inet.sk. Webhosting zvláda jednoduché, ale aj veľmi náročné stránky a magazíny. Podporuje najnovšie technológie a má veľmi prehľadnú a jednoduchú správu domén. Komunikácia s technickou podporou Inet.sk je vynikajúca a za mňa môžem túto firmu iba doporučiť."
Richard Horný
Final Vision, s. r. o.
"Pri migrácii našej stránky sme sa stretli s maximálnou podporou a profesionálnym prístupom. Inet.sk nám nielen pomohol celý proces zvládnuť bez komplikácií, ale tiež poskytol odborné poradenstvo, ktoré zabezpečilo hladký prechod. Ich hosting je rýchly a najmä stabilný, rovnako oceňujeme aj ich priateľskú komunikáciu."
Peter Kasan
Svet-mineralov.sk
"Proces migrácie bol zrealizovaný hladko a efektívne, pričom všetky kroky boli vykonané precízne a bez výpadkov. Inet.sk poskytol spoľahlivé a profesionálne riešenie, ktoré zjednodušilo správu domén a optimalizovalo ich prevádzku. Oceňujeme ich stabilnú infraštruktúru a kvalitné hostingové služby."
Lukáš Kazík
LKStudio.sk
"Mám u Inet.sk zaparkovanú jednu doménu a mám pocit, že tam zaparkujem aj všetky ostatné domény, ktoré mám, pretože po dlhoročných skúsenostiach s rôznymi inými firmami, mi Vaše služby vyhovujú zatiaľ najviac. Odporúčam kvôli dobrej konektivite a primeranej cene + rýchly support."
Ladislav Kéry
vypnutieimobilizera.sk
"Po rokoch skúšania dodávateľov na poli webhostingových služieb sme našli svojho spoľahlivého a stabilného partnera tu. Stabilita, ochota, znalosť, dobrá cena a rýchle vyriešenie prípadných problémov - to je pre nás Inet.sk."
Jaroslav Mráz
Allycom, s.r.o.
"Máme u Vás doménu a hosting. So službami sme nadmieru spokojní. Z Vašej strany máme pozitívne skúsenosti ako sú: rýchle jednanie, znalosť v problematike, ochota pomôcť, stabilita, zavádzanie noviniek, ak ich klient vyžaduje a dobrá cena. Za nás môžeme Inet.sk len odporučiť. Ďakujeme."
Mgr. Zuzana Valovičová
BL servis, s.r.o.