desimaaleja...

VB .NET

Yritin tässä saada ohjelman laskemaan... Ja onnistuinkin...

Sain ohjelman muuntamaan tekstiä kelvollisiksi luvuiksi käyttämällä Val funktiota... Se toimii sinänsä ihan hyvin, mutta se hyväksyy desimaalierottimeksi vain ja ainoastaan pisteen, ei siis pilkkua...

ohjeista kaivoin tälläisen pätkän:

"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 or CInt instead to convert a string to a number."

Tuossa todetaankin, että Val tunnistaan vain pisteen (.) desimaalierottimeksi... ja jos tarvitaan erilaisia desimaalierottimia, niin sitten pitäisi string -> numero muunnoksiin käyttää CDbl tai CInt ... Mutta jostain syystä tuo ei vain toimi...

Siis jos yritän käyttää vaikka tuota CDbl samaan tapaan kuin sitä Val systeemiä, niin kone vain tuuttaa erroria.

"An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll

Additional information: Cast from string "TextBox1" to type 'Double' is not valid."

Miten saisin koneen ymmärtämään pilkkua? Val ei ilmeisesti sitä ymmärrä, ja CDbl ei näytä toimivan, vaikka ohjeet antavat ymmärtää, että sen pitäisi pystyä juuri tuohon.

6

494

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • juport

      No tuosta virheilmotuksesta päätellen koitat castaa merkkijonon "TextBox1" joksikin luvuksi. Missähän numerojärjestelmässä tuollaisen pitäisi toimia?!?!?

    • ...

      Pilkkua voi käyttää textboxissa desimaaliosan erottamiseen, jos esim. tekee aliohjelman, jolla tutkii textboxin sisällön merkki merkiltä. Aliohjelmassa desimaalipilkku pisteeksi ja muunnetun merkkijonon palautus.Val-funktiota voi käyttää aliohjelmaa kutsuvassa funktiossa tekstin muuttamiseksi luvuksi.

    • -jk-

      Jos TextBox1:n sisältö on numeroita:

      Dim a As String
      Dim b As Double
      a = TextBox1.Text
      b = Convert.ToDouble(a)

    • Petri_Petri

      Voithan myös ennen val-muutosta muuttaa tekstissä olevan pilkun pisteeksi.

      Tai ehkä kätevämpää, että teet funktion, joka tekee tuon muutoksen ja palauttaa numeron.

      Function Palautanro#(byval NroTekstinä$)
      dim i
      i=instr(1,NroTekstinä$,",") ' Onko tekstissä pilkkua
      if i then mid$(NroTekstinä$,i,1)="." ' jos tekstissä on pilkku, muutetaan se pisteeksi
      Palautanro#=val(NroTekstinä$)
      End Function

    • .net

      Kiitokset neuvoista.

      Tällä kertaa vain satuin jo keksimään ratkaisun itsekin...

      If IsNumeric(TextBox1.Text) = True Then
      Luku1 = TextBox1.Text
      End if

      Tuollaisella koodilla sain textboxin sisällön luettua numeroina...

    • pitkonen

      CDbl ymmärtää pilkun desimaalierottimena jos se on määritelty maa-asetuksissa erottimeksi.

      Tämä pilkku/piste -erotinsysteemi on kyllä yksi riesa ms:n kehittimissä. Osa funktioista käyttää aina pistettä ja osa käyttää maa-asetuksissa määrättyä erotinta.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Vassarit kummittelee pääni sisällä joulunakin

      Hetki sitten alkoi punakapina. Joulupäivään mennessä ollaan jo Lindtmanin nuoruusvuosien näytelmäkerhossa. Tapaninpäivän
      Maailman menoa
      50
      2662
    2. Oho, köyhyys väheni Marinin hallituskaudella

      👋💥🤕 Tuonkin Marinin hallitus sössi --- Vuosien 2019–2023 sosiaaliturva- ja verotusperusteiden muutokset suhteessa h
      Maailman menoa
      77
      2268
    3. Kylläpä asiat onkin nyt hyvin verrattuna Sannan aikaan

      Sannan aikana aähkön alv oli 10%, nyt 25,5%. Ajatelkaa nytkin pörssisähkö on ilmaista, keskellä talvea! Bensan hinta on
      Maailman menoa
      3
      1651
    4. En tiedä mitä olet mulle

      Rakkauteni,ihastukseni,pakkomielteeni,mitä lie. Jokatapauksessa ajattelen sinua päivittäin lämmöllä ja haluan toivottaa
      Ikävä
      51
      1150
    5. Ukrainan raukkamainen isku Moskovaan.

      Pitikö isku tehdä juuri jouluna.Siinä saattoi jäädä joku lapsi isättömäksi.Kyseessä ei edes sotilaskohde.
      Maailman menoa
      281
      986
    6. On mullakin

      Sua ikävä. En vain pysty siihen mitä toivot. Siksi toivon joskus että voisin vain olla hetken lähelläsi
      Ikävä
      49
      957
    7. Mikä on kaunein naisennimi jonka tiedätte?

      Kotimainen tai ulkomainen.
      Sinkut
      69
      864
    8. Vittumaista Joulua Kuhmolaisille.

      Siinäpä se tiivistettynä.
      Kuhmo
      15
      864
    9. Ikävä edelleen sinua

      Tänään tunnen sen vahvasti. Kaipaan sinua elämääni. En haluaisi heittää hukkaan sitä mitä meillä oli, mutta ollaan aja
      Ikävä
      19
      769
    10. Sekaisin ihastuksesta

      Oletko mennyt joskus sekaisin ihastuksesta? Miten se on näkynyt, tuntunut tai saanut sinut käyttäytymään? Onko jotain, m
      Ikävä
      54
      751
    Aihe