Autore Topic: Ottenere con Format() il punto come simbolo separatore della parte decimale  (Letto 401 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
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 ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
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
« Ultima modifica: 30 Maggio 2022, 10:22:40 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Codice: [Seleziona]
System.Language = "en_US.UTF-8"
Soluzione interessante.
Grazie.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Codice: [Seleziona]
Dim sLanguage As String = System.Language
   ...
  System.Language = sLanguage
Sì, giustamente per tornare al sistema corrente.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »