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

538

    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. Pride-rautu korvaamaan kirjolohi

      Kekkosen saatanan tunari meni muuttamaan aikoinaan sateenkaariväen kalan nimen. Unkarin vallankumouksen innoittamana n
      Maailman menoa
      32
      2411
    2. Purran aikaisemmat kannattajat siirtyneet Lindtmanin leiriin

      Melkoinen muutos on käynnissä Suomen politiikan kentällä. Tulevista häviäjistä on hirmuinen kiire päästä ajoissa voittaj
      Maailman menoa
      100
      2292
    3. Järkyttävä hetki - Ellen Jokikunnas pöyristyy italialaisen lääkärin työstä

      Unelmia Italiassa -sarjassa ollaan Ellen Jokikunnaksen perheen kanssa Italiassa. Jokikunnas ja Rask ovat rempanneet kakk
      Tv-sarjat
      18
      1329
    4. Oot tosi epätavallinen

      ja erikoinen nainen. Tykästyä ikihyviksi sun kaltaiseen naiseen, mitä tästä pitäis edes ajatella.
      Ikävä
      49
      1197
    5. Työeläkkeet ovat pois työntekijän palkasta

      Jokainen työeläkkeen nimissä maksettu euro on otettu pois työtä tekevältä palkansaajalta. Mitä korkeampi työeläketaso o
      Maailman menoa
      33
      1152
    6. Etkö sä muru mussakaiseni ymmärrä

      Että me päästään lähenemään vain kaveruuden kautta? Vain siten mä voin lähettää sulle kuvia ja viestejä 😌 Tänäänkin o
      Ikävä
      27
      910
    7. Etkö voi antaa edes vihjettä mulle?

      Minkä vain me tiedettäisiin? Naiselta miehelle.
      Ikävä
      51
      830
    8. Muistatko? Maisa Torppa jakso räjäytti Veitolan somen: "epäaitoa ja teeskentelyä"...

      Maisa Torppa täyttää tänään 35 vuotta, onnea! Maria Veitola vieraili Yökylässä-ohjelmassa aikansa kohujulkkis Maisa To
      Suomalaiset julkkikset
      11
      801
    9. Kaksi viikkoa enää Rakas...

      Tietäisinpä miten toimia...
      Ikävä
      53
      735
    10. Sammuuko meillä

      Kipinä kun ei enää nähdä
      Ikävä
      56
      724
    Aihe