Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Separatore Decimale
Forum - C# / VB.NET - [VB.NET] Separatore Decimale

Avatar
Neo1986 (Ex-Member)
Pro


Messaggi: 88
Iscritto: 21/06/2010

Segnala al moderatore
Postato alle 15:43
Giovedì, 29/07/2010
Buongiorno a tutti,

è da purtroppo molto tempo che combatto quotidianamente con un problema grosso:

Il simbolo di separatore decimale a seconda delle impostazioni internazionali settate sulla macchina.

In sostanza il problema è questo:

Il pc di sviluppo ha impostazioni internazionali ovviamente italiane, cioè:

Separatore decimale - Simbolo Punto .
Separatore migliaia - Simbolo Virgola ,

Purtroppo quando il software viene eseguito su una macchina americana (che utilizza la configurazione opposta alla nostra) tutte le Format$ dei numeri double se ne vanno a farsi benedire, ed oltretutto la maggior parte dei calcoli con numeri in virgola mobile vengono sballati.

Come posso rimediare a questo problema? mi sembra una cosa assurda dover cambiare le opzioni internazionali sui pc dei clienti

Grazie :k:


Chiedere è lecito, rispondere è cortesia, rompere il caxxx è prassi!
PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 18:24
Giovedì, 29/07/2010
Se dovessi scrivere il programma ex novo ti consiglierei di usare le CultureInfo.
Dovresti usare delle formattazioni standard di .net e selezionare la CultureInfo in funzione del paese.
Codice sorgente - presumibilmente VB.NET

  1. Imports System.Globalization
  2.  
  3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.  
  5.     Dim culture As New System.Globalization.CultureInfo("it-IT", True)
  6.    'Dim culture As New System.Globalization.CultureInfo("en-US", True)
  7.     Dim cifra As Double = 12345.6789
  8.     Dim oggi As Date = Now
  9.     MessageBox.Show(String.Format(oggi.ToString("D", culture)))
  10.     MessageBox.Show(String.Format(cifra.ToString("C", culture)))
  11.  
  12. End Sub


Se devi risolvere il problema su dei programmi già fatti è dura fare le modifiche che ti consiglio, specialmente se ci sono molte formattazioni.


che le risposte ti siano servite o meno un tuo riscontro è segno di cortesia.

http://www.alfonsonatale.altervista.org/
PM Quote