Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 30 Maggio 2022, 02:08:58

Titolo: Ottenere con Format() il punto come simbolo separatore della parte decimale
Inserito da: vuott - 30 Maggio 2022, 02:08:58
Sapete se con la SOLA funzione Format() sia possibile ottenere il "punto" anziché la virgola, quale simbolo separatore della parte decimale da quella intera in un numero in virgola mobile ?
Titolo: Re:Ottenere con Format() il punto come simbolo separatore della parte decimale
Inserito da: Gianluigi - 30 Maggio 2022, 10:19:10
Sapete se con la SOLA funzione Format() sia possibile ottenere il "punto" anziché la virgola, quale simbolo separatore della parte decimale da quella intera in un numero in virgola mobile ?

Una cosa così potrebbe servire?
Codice: [Seleziona]
System.Language = "en_US.UTF-8"
  Print Format(1234.56, "#.00")
  System.Language = "it_IT.UTF-8"
  Print Format(1234.56, "#.00")

Ma temo di no  :-[

PS Però funziona anche con la grafica es:
Codice: [Seleziona]
Public Sub Form_Open()

  System.Language = "en_US.UTF-8"
  TextBox1.Text = Format(1234.56, "#.00")
  System.Language = "it_IT.UTF-8"
  TextBox2.Text = Format(1234.56, "#.00")

End
Titolo: Re:Ottenere con Format() il punto come simbolo separatore della parte decimale
Inserito da: vuott - 30 Maggio 2022, 12:30:52
Codice: [Seleziona]
System.Language = "en_US.UTF-8"
Soluzione interessante.
Grazie.
Titolo: Re:Ottenere con Format() il punto come simbolo separatore della parte decimale
Inserito da: Gianluigi - 30 Maggio 2022, 14:12:46
Prego

Non so cosa devi fare, ma io opterei piuttosto per un modulo o una classe tipo questa Classe CFormat:

Codice: [Seleziona]
' Gambas class file

' CFormat.class code:
Create Static

Public Sub Dot(value As Variant) As String

  Dim sValue As String

  Try sValue = Format(value, "#.00") ' <-- cambiando il format secondo esegenza
  If Error Then
    Return Null
  Else
    Return Replace(sValue, ",", ".")
  Endif

End

Che puoi richiamare con:

Codice: [Seleziona]
Public Sub Form_Open()

  TextBox1.Text = CFormat.Dot(1234.567)
  TextBox2.Text = CFormat.Dot("33")

End

 :ciao:
Titolo: Re:Ottenere con Format() il punto come simbolo separatore della parte decimale
Inserito da: Gianluigi - 31 Maggio 2022, 12:04:00
Naturalmente il metodo Dot è limitato, se serve la formattazione americana il metodo USA sarebbe più adatto:

Codice: [Seleziona]
Public Sub USA(value As Variant, sFormat As String) As String

  Dim sLanguage As String = System.Language
  Dim sResult As String

  System.Language = "en_US.UTF-8"
  Try sResult = Format(value, sFormat)
  System.Language = sLanguage
  Return sResult

End

 :ciao:
Titolo: Re:Ottenere con Format() il punto come simbolo separatore della parte decimale
Inserito da: vuott - 31 Maggio 2022, 15:05:35
Codice: [Seleziona]
Dim sLanguage As String = System.Language
   ...
  System.Language = sLanguage
Sì, giustamente per tornare al sistema corrente.