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:

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.

PM Quote
Avatar
giu446 (Normal User)
Newbie


Messaggi: 4
Iscritto: 15/03/2020

Segnala al moderatore
Postato alle 16:27
Sabato, 30/05/2020
Testo quotato

Postato originariamente da Alfonso:

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.  
  13.  
  14. 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.



Grazie Alonso,
ci ho messo un po a capire come utilizzarlo in base alla mia esigenza, ma alla fine ho capito.
Sono nuovo della programmazione e stavo creando una calcolatrice molto basica e mi occorreva aggiungere la "," nella textbox.text, nel caso servisse a qualcuno posto il codice dove utilizzo la classe CultureInfo scritta sotto l'evento "Private Sub b_virgola_Click(sender As Object, e As EventArgs) Handles b_virgola.Click".

https://paste.ubuntu.com/p/pYtz7v834q/

PM Quote