miten vaihettiin stringin arvo integeriks
Stringin ensimmäisen merkin ASCII-koodi saadaan funktiolla Asc(String), joka on siis tavu eli Byte. Kaksi merkkiä mahtuu yhteen Integer-tyypin muuttujaan. Pidempi vaatii taulukon.
Jos taas sinulla on string-muuttujassa lukuarvo, jonka haluat lukumuuttujaan, käytä val-funktiota. Esimerkki:
dim merkkijono as string dim luku as integer merkkijono = "100" luku = val(merkkijono)
Toimiiko toi val komento strigistä sigleen ja doupleen?
http://msdn.microsoft.com/library/default.asp?
Note The Val function recognizes only the period (.) as a valid decimal separator. When different decimal separators are used, as in international applications, use CDbl instead to convert a string to a number.
Ts, vaikkei sitä suoraan tuolla sanota (miksiköhän?), joo.
CBool
CByte
CInt
CLng
CCur
CSng
CDbl
CDate
Sekä mielenkiintoisena ekstrana CDec, jolla voi muuttaa stringin 64-bittiseksi luvuksi. Valitettavasti toimii vain Variant-muuttujiin, erillistä Decimal-muuttujatyyppiä kun ei ole.
Sitten vielä huomautus: VB käyttää pankkiirin pyöristystä (Banker's rounding). Tämä vähentää laskuvirheitä rahasummia pyöritellessä, mutta toisaalta antaa "epäloogisia" pyöristyssummia. Jos kiinnostaa, niin kokeile:
MsgBox "1.5 = " & CByte(1.5) MsgBox "2.5 = " & CByte(2.5) MsgBox "2.51 = " & CByte(2.51)
Vastaukset ovat 2, 2 ja 3. Normaalipyöristyksellä tulisi 2, 3 ja 3.
Aihe on jo aika vanha, joten et voi enää vastata siihen.