Italian risultato calcolo con punto

saslvovc

Member
Licensed User
Longtime User
Salvatore, Salve ragazzi volevo chiedervi come faccio a togliere dal risultato di una operazione il punto.
naturalmente se faccio calcoli con virgola mi deve ritornare il punto.
 

Straker

Active Member
Licensed User
Longtime User
In questo senso?

B4X:
    Dim f As Float = 123.45
    Dim a As Int
    a = f
    Msgbox("a=" & a,"No title")   'a contiene solo 123 essendo un integer
 

saslvovc

Member
Licensed User
Longtime User
Sub Globals
Private EditText1 As EditText
Private EditText2 As EditText
Private Button1 As Button
Private EditText3 As EditText
End Sub

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout("Layout1")
End Sub
EditText3.text=EditText1.Text + EditText2.Text
End Sub

es: 5+5 = 10.0
 

LucaMs

Expert
Licensed User
Longtime User
Per i calcoli devi usare variabili, non le view.

Quindi, invece di:
EditText3.text=EditText1.Text + EditText2.Text

qualcosa come:
Private V1, V2, Tot as Float (o Double)
Tot = V1 + V2
Label1.Text = Tot

Per la visualizzazione del risultato, puoi utilizzare la funzione NumberFormat.
Label1.Text = NumberFormat(Tot, 3, 0)

(sempre meglio dare un nome logico alle view, come lblTotal invece di Label1)
 
Last edited:

saslvovc

Member
Licensed User
Longtime User
non va ritorna 010
ho trovato questa funzione

Sub CInt(o As Object) As Int
Return Floor(o)
End Sub

Label1.Text = CInt(Tot)


ma se faccio calcoli con virgola mi da sempre numero intero
 

Straker

Active Member
Licensed User
Longtime User
Non ho ancora afferrato la domanda....
Tu hai numeri con decimali e vuoi visualizzare solo la parte intera?
Oppure devi fare arrotondamenti?

Insomma, prova a spiegare meglio quali sono i dati di partenza e qual'ė il risultato che vuoi ottenere.
 

Straker

Active Member
Licensed User
Longtime User
Ok. Capito.
Tecnicamente ė una pessima pratica fare delle somme usando direttamente degli EditText.
Sarebbe molto meglio usare variabili di tipo numerico per gestire i numeri...
Il fatto che il risultato compaia col punto decimale deriva proprio dall'uso degli EditText (che sono di tipo stringa, cioè caratteri). Il b4a si accorge che stai facendo operazioni aritmetiche utilizzando 'contenitori' fatti per i caratteri e quindi fa una conversione intrinseca (tecnicamente un 'cast') trasformando il contenuto degli EditText in valori effettivamente numerici. La conversione da carattere a numero avviene tramite 'contenitori' numerici per numeri generici, con virgola.
Ecco dunque perché ti appare la virgola ( o meglio, il punto decimale) nel risultato.

Per eliminare quel punto esistono moltissimi modi.
Ma la cosa migliore ė impostare fin da subito il programma nel modo migliore. Ad esempio la tua sub Button1_Click diventerebbe cosī (e per inciso, invece di Button1 sarebbe meglio dargli un nome più esplicito, del tipo btnSomma)
B4X:
Sub Button1_Click()
   Dim Valore1 as Int
   Dim Valore2 as Int
   Valore1 = EditText1.Text
   Valore2 = EditText2.Text
   EditText3.Text = Valore1 + Valore2

In questo modo ti assicuri che i calcoli vengono fatti su valori interi.
Inoltre, prima di convertire delle stringhe (caratteri) in numeri, sarebbe meglio controllare che siano effettivamente numeri e non lettere
B4X:
If IsNumber(EditText1.Text) then Valore1 = EditText1.Text
 
Top