Ak skúsim spočítať 0.000123456789012345 + 1 očakávam výsledok 1.000123456789012345, avšak excel mi vráti 1,00012345678901
Ak to skúsim zapísať do VBA dopadne to takto:
Sub test()
Dim x As Double
Dim y As Double
x = 1.23456789012345E-04
y = 1 + x
MsgBox x & vbNewLine & y
End Sub
Na uloženie desatinných hodnôt do 14 číslic môžeme použiť dátový typ Double, ale pomocou funkcie konverzie VBA CDec môžeme uložiť až 28 desatinných miest.
Premennú musíme deklarovať ako dátový typ Variant. Potom pomocou funkcie VBA CDEC môžeme previesť na typ údajov Decimal.
Sub test()
Dim x As Variant
x = CDec(1.23456789012345E-04) ' excel vba také číslo nevie správne zapísať
x = 1 + x
MsgBox x
End Sub
Sub test2()
Dim x As Variant
Dim y As Variant
x = CDec(1.23456789012345E-04)
y = CDec(1 + x)
MsgBox y
End Sub
Sub test3()
Dim x As Variant
x = CDec("0,000123456789012345")
x = x + 1
MsgBox x
End Sub
Pokiaľ ide o obsadenie pamäte, Double spotrebuje 8 bajtov a CDEC spotrebuje 14 bajtov systémovej pamäte. Keď deklarujeme typ premennej ako Variant, hodnota bude Empty, ale Double bude 0.
Múdrosti som čerpal z https://www.wallstreetmojo.com/vba-cdec/.
Komentáre
Zverejnenie komentára