Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Kertolasku desimaaliluvuilla

Sivun loppuun

Jorgga [16.05.2007 14:34:05]

#

hinta = Val(Text3.Text) * Val(Text9.Text)

text3.text = 3 ja text9.text = 1.5
koodi tulostaa 4 vaikka se nyt kuitenkin on 4,5
koodi on tälläisessä yhteydessä:

hinta = Val(Text3.Text) * Val(Text9.Text)
List2.AddItem taulu(0) & "|" & hinta & "|" & Text3.Text

mutta kertomisen kahdella se kyllä osaa :/

Grez [16.05.2007 14:48:32]

#

Onko hinta määritelty? Tietotyyppi?

Veikkaukseni: hinta on Integer tai Long

Jorgga [16.05.2007 15:57:32]

#

long... eli pitäisi olla integer? joo nyt pitäs kyl jo alkaa herää...
Edit:
muutin integeriks mut silti ei toimi

Grez [16.05.2007 16:04:28]

#

Long = Pitkä kokonaisluku
Integer = Normaalipituinen kokonaisluku

Näistä voinet päätellä mihin desimaalit katoavat.

Jorgga [16.05.2007 16:27:33]

#

*on tässäki koodaaja*...

Merri [16.05.2007 18:11:00]

#

Rahallisille arvoille kannattaa käyttää Currencya, joka sallii neljä desimaalia. Se on 64-bit kokonaisluku, mutta sen pilkun paikkaa on siirretty neljä paikkaa vasemmalle.

setä [16.05.2007 19:06:43]

#

Tuskin desimaalit tulevat näkyviin vaikka käyttäisit currencyä tai doublea sillä Val-funktio kadottaa desimaalit jos erottimena on pilkku. Varmaan viides kerta kun kerron sen täällä putkassa.
Edit: Näköjään erottimen oli kuitenkin piste.

Grez [16.05.2007 19:34:32]

#

Niin, jos ne kuitenkin olisi pilkut, niin miten olisi mahdollista että 3*1=4 ?

setä [17.05.2007 10:19:04]

#

Niin, en huomannut ensin että erottimena on tosiaan piste. Silloin koodi vaatii tuon Val-funktion. Jos kuitenkin erottimen on pilkku, kertolasku toimii suoraan oikein ilman mitään muunnosfunktioita koska VB muuntaa merkkijonon itse doubleksi.


Sivun alkuun

Vastaus

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

Tietoa sivustosta