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

469

    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. Purra sössi kaiken 2 vuodessa, itkee nyt Marinin perään

      Nyt on taas sama vanha itkuvirsi, kun ei omat taidot riittänee. Kaikki on taas muiden syytä. No miten sen "Tunnin juna"
      Maailman menoa
      72
      8925
    2. Ikuiset kaipaajat

      Miksette vaan mene sen kaipauksen kohteen luokse ja puhu sille suoraan? Mitä järkeä on kaipailla jotain puolituttua vuo
      Ikävä
      154
      5594
    3. Nyt se on selvitetty: Sanna Marinin hallitus lisäsi menoja 41 miljardilla

      ”vasemmistohallitus oli katastrofaalisen huono”, sanoo kokoomus. Sanna Marinin (sd.) hallituksen tekemät menolisäykset
      Maailman menoa
      128
      5050
    4. Orpon hallitus runnoi Tunnin junan ilman tarvetta

      Näinkö valtiontaloutta hoidetaan? Siis asiantuntijoidenkin aikoja sitten kannattamattomaksi laskema Tunnin juna tehdään
      Maailman menoa
      17
      3900
    5. Riikka ottaa miljardi euroa EU:n yhteisvelkaa Suomelle

      Niin kääntyi irvipersun takki taas, vaikka vaalilupauksissa oli ettei yhteisvelkaa Suomi enää koskaan ota. No nyt otti m
      Maailman menoa
      85
      3480
    6. Lindtman ylivoimainen suosikki pääministeriksi

      Lindtmania kannattaa pääministeriksi peräti 50 prosenttia useampi kuin toiseksi suosituinta Kaikkosta. https://www.ilta
      Maailman menoa
      53
      3379
    7. Veronmaksajat kustantavat yrittäjien eläkkeitä jo yli 500 miljoonalla

      Suomalaista yrittäjää ei kommunistista erota. Aktiivisen "yrittämisen" maksattaa yritystukina yhteiskunnalla, ja vieläpä
      Yrittäjyys
      40
      2731
    8. En tiedä ymmärrätkö

      Kuinka paljon merkitset mulle. Näet minut minuna etkä silti käännä selkääsi. Tökit jatkuvasti kepillä jäätä ja menit ehk
      Ikävä
      10
      2701
    9. Sanna Marin - Maailman paras talousasiantuntija?

      PersKeKoa pukkaa? https://www.hs.fi/politiikka/art-2000011636623.html
      Maailman menoa
      55
      2667
    10. Kenenkä halli se on tulessa nelostiellä

      11 yksikköä paikalla
      Pyhäjärvi
      24
      1747
    Aihe