Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Orione
    Registrato dal
    Oct 2002
    Messaggi
    148

    [C#] Conversione di una variabile numerica con virgola

    Ciao a tutti,

    vi pongo una domanda che sicuramente per alcuni sarà banalissima ma sinceramente non ne esco. Ho una necessità, la mia funzione legge un file txt, questo ha dei numeri che devo convertire in double, per esempio ho la riga 008923 e questa diventa 89,23 se è un server con la lingua italiana, mentre mi diventa 89.23 se è in inglese. Poichè il portale web su cui la mia pagina si appoggia è su dei server che a seconda del server meno occupato prende in carico la richiesta di apertura dello stesso, in alcuni casi è un server in lingua italiana, in altri in lingua inglese, come faccio a fare in modo che converta il numero sempre in lingua inglese? Indipendentemente dalla lingua del server?

    Spero di essere stato chiaro e grazie in anticipo

  2. #2
    dopo la conversione, replace "," con "."

  3. #3
    Utente di HTML.it L'avatar di Orione
    Registrato dal
    Oct 2002
    Messaggi
    148
    Ciao

    faccio già una cosa simile, in realtà metto replace(".","") perchè se ho un valore del tipo 1.250,00 devo prima togliere il punto e poi replace(",",".") in modo tale che mi risulti 1250.00, questo funziona se sono in lingua italiana, se sono in lingua inglese il mio numero diventa 1,250.00 e facendo la conversione mi esce 1.25000 ma in realtà questo non deve subire variazioni

  4. #4
    come converti la stringa del file txt in numero?

  5. #5
    Utente di HTML.it L'avatar di Orione
    Registrato dal
    Oct 2002
    Messaggi
    148
    con .ToString("N2")

  6. #6
    se tu leggi 008923 con .ToString("N2") dovresti ottenere 8.923,00 ... come fai a ottenere 89,23?

  7. #7
    Utente di HTML.it L'avatar di Orione
    Registrato dal
    Oct 2002
    Messaggi
    148
    io so che 008923 sono 0089,23 perchè le ultime due cifre sono i decimali quindi converto .tostring("N2")

    string s = "0089,23";
    string d = double.Parse(s).ToString("N2");

    se metto il punto 0089.23 mi esce 8923.00

    questo perchè è in italiano, in inglese mi funziona al contrario

  8. #8
    Utente di HTML.it L'avatar di Orione
    Registrato dal
    Oct 2002
    Messaggi
    148
    Ciao

    forse è più semplice del previsto. Configuro la mia culture info all'inizio e dovrei essere a posto, devo fare però altre verifiche

    CultureInfo ci = new CultureInfo("US-en");
    System.Threading.Thread.CurrentThread.CurrentCultu re = ci;
    System.Threading.Thread.CurrentThread.CurrentUICul ture = ci;

  9. #9
    Quote Originariamente inviata da Orione Visualizza il messaggio
    Ciao
    ....
    forse è più semplice del previsto.
    Ciao,

    oppure leggi il double cosi com'è (come fosse un intero) e dividi per 100

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    credo che la cosa più veloce sia

    codice:
    var stringa = (double.Parse(s) / 100).ToString(CultureInfo.CurrentCulture);
    chiaramente se CurrentCulture ti prende la CultureInfo del server, altrimenti gli passi la ci desiderata

    codice:
    var stringa1 = (double.Parse(s) / 100).ToString(new CultureInfo("en-US"));
    
    var stringa2 = (double.Parse(s) / 100).ToString(new CultureInfo("it-IT"));
    Ultima modifica di rikyeko; 22-05-2018 a 19:09
    Riccardo Sadocchi
    Microsoft MCP C#

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 © 2024 vBulletin Solutions, Inc. All rights reserved.