Gambas-it

Gambas3 => Programmazione => Topic aperto da: Golia - 20 Luglio 2020, 16:09:16

Titolo: [RISOLTO]Formula Float
Inserito da: Golia - 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 :-\
Titolo: Re:Formula Float
Inserito da: kicco - 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:
Titolo: Re:Formula Float
Inserito da: cogier - 20 Luglio 2020, 16:24:54
Considerate il risparmio come un intero.
 €123.45 * 100 = 12345
12345/100 = €123.45
Titolo: Re:Formula Float
Inserito da: Golia - 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
Titolo: Re:Formula Float
Inserito da: vuott - 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
Titolo: Re:Formula Float
Inserito da: Golia - 20 Luglio 2020, 18:00:20
Grande Vuott! Grazie!!

e se volessi farlo per un numero decimale? "1.234,56"
Titolo: Re:Formula Float
Inserito da: Gianluigi - 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))
Titolo: Re:Formula Float
Inserito da: vuott - 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
Titolo: Re:Formula Float
Inserito da: Golia - 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.
Titolo: Re:Formula Float
Inserito da: vuott - 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
Titolo: Re:Formula Float
Inserito da: Golia - 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:
Titolo: Re:Formula Float
Inserito da: vuott - 21 Luglio 2020, 11:35:17
Non sono abituato a gurdare la wiki

(https://media1.tenor.com/images/e0c0e37336a039266b96c3fab7bc6c0d/tenor.gif?itemid=11944431)