Formát čísel pre funkciu CSng
Funkcia CSng vrácia racionálne čísla s menšou dĺžkou a presnosťou. Premenná typu Single ma rozsah od +/- 1,4E-45 až +/-3,4E38. Aké argumenty použiť si ukážeme v prvom príklade.
1. príklad: Testujeme formát argumentov pre funkciu CSng
Sub macro
On Error Resume Next
Dim i As Integer
Dim retazec As String
Dim pole()
pole() = Array(22, -98, -8.1, -289.789884005, 15682.45958, 178,1E9, 215.4E-10, 235.14E-33, "p8.31", "154.8889", "-787.22", "898.77", "569.78998pol", "-89898.7895sg", 454.87E32, "15.22", 15.22)
For i = LBound(pole()) To UBound(pole())
retazec = retazec & i+1 & " CSng(" & pole(i) & ") = "
retazec = retazec & CSng(pole(i))
retazec = retazec & Chr(10)
Next
MsgBox retazec
End Sub
Rozbor makra:
Formát čísel pre funkciu CDbl
Funkcia CDbl vracia typ premennej Double. Narozdiel od Single má Double väčší rozsah a to od +/-4.9E-324 až 1.8E308, čo nám ponúkne omnoho väčšie škálovanie s plávajúcou desatinnou čiarkou oproti premennej Single.
2. príklad: Formát čísel pre funkciu CDbl
Sub macro
On Error Resume Next
Dim i As Integer
Dim retazec As String
Dim pole()
pole() = Array(22, -98, -8.1, -289.789884005, 15682.45958, 178,1E9, 215.4E-10, 235.14E-33, "p8.31", "154.8889", "-787.22", "898.77", "569.78998pol", "-89898.7895sg", 454.87E32, "15.22", 15.22, 1545.45E125, -4546.48E-128, 45.45E200, -4.45E-242, 12.4E301, 14.7E-302)
For i = LBound(pole()) To UBound(pole())
retazec = retazec & i+1 & " CDbl(" & pole(i) & ") = "
retazec = retazec & CDbl(pole(i))
retazec = retazec & Chr(10)
Next
MsgBox retazec
End Sub
Rozbor makra:
Funkcia CDbl funguje rovnako ako funkcia CSng, len s tým rozdielom, že vracia premennú typu Double.
Formát výrazov pre funkciu CBool
Funkcia CBool po vyhodnotení výrazu vracia pravdivostnú hodnotu. Otázkou je, čo všetko vie vyhodnotiť táto funkcia? To si ukážeme v treťom príklade.
3. príklad: Formát výrazov pre funkciu CBool
Sub macro
On Error Resume Next
Dim i As Integer
Dim retazec As String
Dim pole()
Dim a, b, c, d, e, f As Integer
a = 12 : b = 10 : c = 14 : d = 11 : e = 14 : f = 15
pole() = Array(0 ,-1, 15, 12.7, "0", "189", "k785", "8785loiuu", "4451.4558uxfi", -1818, -145.155, "-klp7178", "-785hm", "-7595.78889", "-155.144pklp", 20 < 15, 10 < 12, 48 > 12, 15 = 14, 28 = 28, 25 <> 14, 881 <> 881, "25 < 24", "999 <> 888", a = b, c < e , d > f, f <> a, c = e, a <= d, f >= a, &HA <> &HA2)
For i = LBound(pole()) To UBound(pole())
retazec = retazec & i+1 & " CBool(" & pole(i) & ") = "
retazec = retazec & CBool(pole(i))
retazec = retazec & Chr(10)
Next
Msgbox retazec
End Sub
Rozbor makra:
1 CBool(0) = False – číslo 0 je návratová hodnota pre False
2 CBool(-1) = True – číslo -1 je návratová hodnota pre True
4 CBool(12,7) = True – okrem čísla 0 vráti True vždy bez ohľadu nato, či je číslo celé alebo racionálne
5 CBool(0) = False – funkcia vie vydolovať číslo aj z reťazca
6 CBool(189) = True – vracia to čo má
7 CBool(k785) = – síce funkcia vie zobrať číslo z reťazca, ale ak je zapísané numerický
15 CBool(-155.144pklp) = – podobne ako bod 7 a rovnaký dôvod platí pre všetky zápisy, ktoré nedali žiadny výsledok
16 CBool(0) = False – klasické porovnávanie čísel
23 CBool(25 < 24) = – je síce pravda, že funkcia vie získať číslo z reťazca, ale nenumerické znaky už nie
25 CBool(False) = False – porovnávanie prostredníctvom zadeklárovaných premenných
32 CBool(-1) = True – posledný príklad slúži ako ukážka, že u hexadecimálnych čísel platia rovnaké pravidla ako u desiatkových

Pokračujeme v hľadaní správneho formátu argumentov pre funkciu CSng, CDbl a CBool.












