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

497

    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. Vuonna 2026 jää entistä vähemmän rahaa käteen palkansaajille

      Työttömyysvakuutusmaksu nousee 0,3 prosenttia. Työeläkemaksu nousee 7,15 prosentista 7,3 prosenttiin. Työmarkkinajärjest
      Maailman menoa
      34
      5380
    2. Yritystuet pois ja työeläkevaroilla maksettava valtion velka pois

      Nyt on teille kerrottu keino kuinka Suomen velkaongelmasta päästää eroon kertalaakista. Älkää saatanat enää minulle tul
      Maailman menoa
      88
      4773
    3. Suomen kansa puhunut: Purra huonoimpia ministereitä

      Kouluarvosanalla 6–, eli samaa tasoa mitä Purran oikeakin koulutodistus. Epäpätevyys on tullut huomattua Suomen talouden
      Maailman menoa
      293
      3763
    4. Ylen juttu sisäministeristä oli selvän tarkoitushakuinen

      haluttiin vielä vuoden loppuun saada joku "kohu". (Olisiko Yle tehnyt jutun jos sisäministerinä olisi esim. RKP:n, jota
      Maailman menoa
      124
      3177
    5. Suomalaista yrittäjää ei kommunistista erota

      Muualla maailmassa yrittäjät elävät asiakkaiden rahoilla, Suomessa palkansaajien maksamilla veroilla. Palkansaajahan ma
      Maailman menoa
      47
      2709
    6. 25
      2048
    7. Joulun ruokajonoissa entistä enemmän avuntarvitsijoita - Mitä ajatuksia tämä herättää?

      Räppärit Mikael Gabriel, VilleGalle ja Jare Brand jakoivat ruokaa ja pehmeitäkin paketteja vähävaraisille jouluaattoa ed
      Maailman menoa
      107
      1907
    8. Ulkoministeriön konsulipäällikkö arvostelee rajusti Haavistoa: "Täällä on pelon ilmapiiri"

      "– Täällä on ministerin toimien takia aivan selvästi pelon ilmapiiri. Jos sellaisen annetaan pesiytyä virkamieskulttuuri
      Maailman menoa
      10
      1877
    9. Mikä on pahinta

      Mitä kaivattusi voisi tehdä sinulle?
      Ikävä
      248
      1822
    10. Pyydän anteeksi etten osannut ratkaista

      Mitään muuta kuin lähtemällä. Et oikein tullut vastaan etkä kuunnellut. Tuntui että minun piti koittaa sopia ja sovitell
      Ikävä
      74
      1739
    Aihe