Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C#] Double<-- String

  1. #1

    [C#] Double<-- String

    Ciao,
    è da poco che mi sono avvicinato al C#, e non conosco ancora le classi del C# ...
    per convertire da Stringa a Double, come faccio?
    Con

    Double a = Convert.ToDouble(b);

    se b = "3.4", a mi risulta 34
    se b = "3,4". a risulta 34...

    VVoVe:

    come mai? non riesce a tener conto della virgola?
    Esiste un metodo ( immagino di si) che converta stringa in double tenendo conto della virgola?
    (Si noti che nel mio progetto utilizzo il tipo String con la "S" maiuscola, non so se possa far differenza)...

    ciao grazie...
    Programmazione .NET
    http://www.samueletosatto.tk

  2. #2
    Scusate, con la virgola funziona...
    Ma se io volessi immettere il mio numero con il punto anzichè con la virgola?
    E' troppo brutto con la virgola, io sono abituato al punto, anche perchè C# stesso nel codice usa il punto come virgola nella rappresentazione dei numeri decimali!
    Programmazione .NET
    http://www.samueletosatto.tk

  3. #3
    Così accetta solo il punto.
    codice:
    using System.Globalization;
    Double a = Convert.ToDouble(b,NumberFormatInfo.InvariantInfo);
    Così accetta sia il punto che la virgola.
    codice:
    using System.Globalization;
    //...
    NumberFormatInfo nfi = NumberFormatInfo.InvariantInfo;
    Double a = Convert.ToDouble(b.Replace(",", nfi.NumberDecimalSeparator), nfi);
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Ok adesso funziona...
    Solamente che dopo un certo calcolo, il numero double che mi viene restituito ha ancora la virgola ",".... uhm, lo devo ritrasformare in stringa, fare il replace, oppure c'è un modo per avvisare il sistema che voglio lavorare con il punto?
    Programmazione .NET
    http://www.samueletosatto.tk

  5. #5
    Il valore double internamente non ha né virgola né punto, è solo un valore binario; quando però lo converti in una stringa si applicano le impostazioni internazionali del sistema (che, per i sistemi italiani, a meno che tu non le cambi nel Pannello di controllo, è di avere la virgola come separatore decimale). Puoi eseguire l'override di queste impostazioni quando converti usando accorgimenti particolari; ad esempio:
    codice:
    string s, double d=10.5;
    s=d.ToString(NumberFormatInfo.InvariantInfo);
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.