View Full Version : [VB6] Problemas de cálculo


wizard964
11-11-2007, 15:17
Tenho um formulário q é suposto pegar nos valores TOTAIS de formulários ja criados A,V e U

Como consequencia o prog deve efectuar o seguinte calculo : (A+V+U)/3 = G onde G deve apresentar o resultado em número inteiro absoluto.

Nas caixas A V e U tem q aparecer o resultado total dos formularios anteriores.

Eu nao consigo programar esta parte tentei + sempre dava erro :

Private Sub Form_Load()
Dim s As Integer
total.Text = Str((Val(FRMU.txtvtotal) + Val(FRMA.txtAtotal) + Val(frmp15.txtUtotal))) / 3
's = (Val(FRMU.txtvtotal) + Val(FRMA.txtAtotal) + Val(frmp15.txtUtotal)) / 3

'total.Text = Str(s)
txta.Text = Str(Val(FRMA.txtAtotal))
txtu.Text = Str(Val(FRMU.txtvtotal))
txtv.Text = Str(Val(frmp15.txtUtotal))
txtg.Text = Str(total.Text)
http://img230.imageshack.us/img230/7826/vb6os5.th.jpg
(http://img230.imageshack.us/my.php?image=vb6os5.jpg)

PJTuga
11-11-2007, 15:26
Para escreveres numeros numa textbox nao precisas de converter para string..

podias era dizer qual é o erro

wizard964
11-11-2007, 15:33
PJTUGA> O prog nao dá erro + não realiza o cálculo da maneria correcta
ex: (11+ 12+11)/3=11.333333... mas o programa diz que o resultado é 13

PJTuga
11-11-2007, 15:44
PJTUGA> O prog nao dá erro + não realiza o cálculo da maneria correcta
ex: (11+ 12+11)/3=11.333333... mas o programa diz que o resultado é 13

em vez de Dim s As Integer
experimenta Dim s As Real

wizard964
11-11-2007, 15:45
Ok..PJTUGA..d facto o resultado estava certo.Pore nas caixas d texto eq já nao esta a mostrar o resultado actualizado dos formularios anteriores.
Enfim o maior não é esse + sim como colocar o valor decimal por inteiro ! é suposto o prog apresentar um valor por inteiro
Ex: 13,5 = 13 | 13.6 = 14 | 13,4 = 13

Pss
11-11-2007, 16:43
Ok..PJTUGA..d facto o resultado estava certo.Pore nas caixas d texto eq já nao esta a mostrar o resultado actualizado dos formularios anteriores.
Enfim o maior não é esse + sim como colocar o valor decimal por inteiro ! é suposto o prog apresentar um valor por inteiro
Ex: 13,5 = 13 | 13.6 = 14 | 13,4 = 13

O "Dim s As Real" tem de estar em "General Declarations" penso eu...

Não sei nenhum que faça os arredondamentos :(

FIX: Retorna a parte inteira de um número. Não faz arredondamento
Fix([expressãoNumérica])
Por exemplo 10.7 passa para 10
10.2 passa para 10

wizard964
11-11-2007, 17:24
Sim + como eq eu faco ixo !!!

PJTuga
11-11-2007, 17:30
Para arredondar acho que é Int(valor)

Pss
11-11-2007, 17:33
Sim + como eq eu faco ixo !!!

Fazes um command e metes o código


total.Text = fix(total)

kzip
11-11-2007, 17:35
Para arredondar acho que é Int(valor)

O "Int" faz a mesma coisa do que o "Fix" acho eu.


Ex: 13,5 = 13 | 13.6 = 14 | 13,4 = 13

tens a certeza que 13,5 é para arredondar para 13? é que o arredondamento por aproximação faz com que arredonde para 14.

Se for mesmo assim, então:

resultado = INT( valor + .49)

Armadillo
13-11-2007, 10:25
Ta no MSDN

Round Function


Description
Returns a number rounded to a specified number of decimal places.
Syntax
Round(expression [,numdecimalplaces])
The Round function syntax has these parts:
Part Description expression Required. Numeric expression (http://javascript%3Cb%3E%3C/b%3E:alink_4.Click%28%29) being rounded. numdecimalplaces Optional. Number indicating how many places to the right of the decimal are included in the rounding. If omitted, integers are returned by the Round function.