Autore Topic: [RISOLTO]Formula Float  (Letto 946 volte)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
[RISOLTO]Formula Float
« il: 20 Luglio 2020, 16:09:16 »
Ciao,
Sono molto arrugginito e vorrei usare la formula piu giusta.
Per rappresentare un valore tipo Float in Valuta, salvato in un database uso questo:
Citazione
Me.TextBox1.Text = Format(1234.56, gb.Currency)
Adesso per fare l'inverso, cioè andare a salvare nel db il mio numero deve tornare Float.
Così funziona ma non mi piace
Citazione
Dim Valor As String
Valor = Replace("€ 1.234,56", " ", "")
Valor = Replace(Valor, "€", "")
Valor = Replace(Valor, ".", "")
Valor = Replace(Valor, ",", ".")
Valor = CFloat(Valor)
  Me.TextBox2.Text = Valor
Sono sicuro che mi sfugge qualcosa di molto semplice :-\
« Ultima modifica: 21 Luglio 2020, 10:13:31 da Golia »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Formula Float
« Risposta #1 il: 20 Luglio 2020, 16:15:51 »
Non ho esperienza con i valori valuta. Così su due piedi mi viene da dire
CFLOAT
ma non so se CFloat converte anche un valore valuta in float.
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline cogier

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re:Formula Float
« Risposta #2 il: 20 Luglio 2020, 16:24:54 »
Considerate il risparmio come un intero.
 €123.45 * 100 = 12345
12345/100 = €123.45

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re:Formula Float
« Risposta #3 il: 20 Luglio 2020, 16:33:59 »
Citazione
Non ho esperienza con i valori valuta. Così su due piedi mi viene da dire
CFLOAT
ma non so se CFloat converte anche un valore valuta in float.
 
No se sono presenti caratteri tipo "€" o spazi o virgole-

Citazione
Considerate il risparmio come un intero.
 €123.45 * 100 = 12345
12345/100 = €123.45

"€ 1.234,56"
Non posso moltiplicare una stringa dove sono presenti simboli o virgole, devo sempre "togliere di mezzo" quello che non centra con i numeri

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Formula Float
« Risposta #4 il: 20 Luglio 2020, 17:49:06 »
Codice: [Seleziona]
Dim Valor As String
Valor = Replace("€ 1.234,56", " ", "")
Valor = Replace(Valor, "€", "")
Valor = Replace(Valor, ".", "")
Valor = Replace(Valor, ",", ".")
Valor = CFloat(Valor)
Per ora riesco ad eliminare due passaggi:

Codice: [Seleziona]
Public Sub Main()

  Dim s As String = "€ 1.234,56"
  Dim valor As String

 valor = Scan(s, "* *")[1]
 Print CFloat(Val(valor))

End
« 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 Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re:Formula Float
« Risposta #5 il: 20 Luglio 2020, 18:00:20 »
Grande Vuott! Grazie!!

e se volessi farlo per un numero decimale? "1.234,56"

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Formula Float
« Risposta #6 il: 20 Luglio 2020, 19:19:12 »
Attenzione che gb.currency è insidioso, vedi http://gambaswiki.org/wiki/comp/gb/gb/currency?l=it

Meglio  usare:
Codice: [Seleziona]
Format(1234.56, "$,0.00")

 :ciao:

P.S. Dimenticavo, anche io preferisco dove possibile usare "interi" ti rimando a questo post:
https://www.gambas-it.org/smf/index.php?topic=7868.msg48590#msg48590

e se posso permettermi di rispondere alla domanda per vuott:
Non serve usare scan basta val:
Codice: [Seleziona]
Dim valor As String = "1.234,56"

  Print CFloat(Val(valor))
« Ultima modifica: 20 Luglio 2020, 19:35:18 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.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Formula Float
« Risposta #7 il: 20 Luglio 2020, 21:21:59 »
Le funzioni sono molte; una potrebbe essere:

Codice: [Seleziona]
Public Sub Main()

  Dim bb As Byte[]
  Dim b As Byte
  Dim f As Float
 
  bb = Byte[].FromString("€ 1.234,56")
 
  Repeat
    If bb[b] And 16 Then
      Inc b
    Else
      bb.Remove(b)
    Endif
  Until b == bb.Max
 
  f = bb.ToString() / 100
 
  Print f

End
« 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 Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re:Formula Float
« Risposta #8 il: 20 Luglio 2020, 21:37:37 »
Grazie, adesso mi è più chiaro.
Vuott ammiro il tuo codice che per le mie capacità è complicatissimo :ok:
Una curiosità, non conosco Scan, ho provato anche a gurdare la guida ma non la comprendo.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Formula Float
« Risposta #9 il: 20 Luglio 2020, 23:55:09 »
...non conosco Scan, ho provato anche a gurdare la guida ma non la comprendo.

Hai dato un'occhiata alla nostra Wiki ?

   https://www.gambas-it.org/wiki/index.php?title=Scan
« 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 Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re:Formula Float
« Risposta #10 il: 21 Luglio 2020, 10:13:09 »
già la wiki.... :D
Non sono abituato a gurdare la wiki, una volta non c'era quasi niente. Avete fatto un lavoro enerme, quanta roba!!
Complimenti
Grazie mille compreso e risolto  :2birre:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Formula Float
« Risposta #11 il: 21 Luglio 2020, 11:35:17 »
Non sono abituato a gurdare la wiki

« 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. »