Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: string to integer

ChoBo [26.01.2006 13:47:44]

#

miten vaihettiin stringin arvo integeriks

setä [26.01.2006 14:28:37]

#

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.

KeKimmo [26.01.2006 14:53:05]

#

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)

ChoBo [26.01.2006 15:34:40]

#

Toimiiko toi val komento strigistä sigleen ja doupleen?

Blaze [26.01.2006 16:19:42]

#

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafctval.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.

Merri [26.01.2006 16:36:02]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta