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

572

    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. Paljonko meidän ikäero on?

      Ois kiva tietää.
      Ikävä
      127
      1617
    2. Kuka tai ketkä tappo eilen?

      Kenet ja miksi?
      Varkaus
      25
      1448
    3. Nainen onko kaikki

      Onko sinulla nainen kaikki hyvin? mies
      Ikävä
      140
      1162
    4. Työttömät risusavottaan

      Tuli tässä juhannusnuotiolla sellainen idea mieleen, että miksei työttömiä velvoiteta tekemään hanttihommia, kuten risus
      Maailman menoa
      337
      936
    5. Mies onko sinulla

      Kaikki hyvin? 🌞 -nainen
      Ikävä
      42
      760
    6. Arvostele kaivattusi

      ulkonäköä, asteikolla 1-10. Perustelut myös 🧢
      Ikävä
      50
      748
    7. Persujen kansanedustaja häpäisi lipun!

      "Persujen kansanedustaja Pekka Aittakumpu julkaisi Instagramissa videon, jossa hän heittää Pride-lipun roskiin. Video on
      Maailman menoa
      303
      737
    8. Jos tunnistit...

      Voit hyvin ottaa yhteyttä...olisi mukava jutella☺️
      Ikävä
      60
      711
    9. Mitä teet mies?

      Oletko jonkun naisen kanssa? 😞
      Ikävä
      66
      676
    10. Väsynyt odottamiseesi, M.

      Vaikka et minua haluaisi tai huolisi, asia pitäisi käydä lävitse. Siksi etten sinusta pääse ylitse. Pystyisinkö tyytym
      Ikävä
      49
      665
    Aihe