Jump to content
Fórum Script Brasil
  • 0

Uai... O Que Está Dando Errado?


Guest --HClausing --
 Share

Question

Guest --HClausing --

Boa Tarde.

Meu problema é o seguinte... estou fazendo uma calculadora que funciona igual a financeira hp12c, mas estou tendo um problema com a soma, ao invés de somar os dois numeros, ela junta o segundo atraz do outro. Ex: 10+2 deveria ser 12, mas esta dando 102... as demais operações estao ok. Vou colocar uma parte do codigo pra vocês:

Dim valor1 As String

Dim valor2 As String

Dim total As String

Private Sub Bt_Enter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_Enter.Click

valor1 = TextBox1.Text

TextBox1.Text = ""

Bt_pt.Enabled = True

End Sub

Private Sub Bt_mais_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_mais.Click

valor2 = TextBox1.Text

total = CDbl(valor1 + valor2)

TextBox1.Text = CStr(total)

End Sub

Funciona assim: digita-se o primeiro valor e apertando "Enter" armazena o valor na variável "valor1";

digita-se o segundo valor e apertando o botão "+" ele armazena o segundo valor em "valor2" e faz com que "total" seja "valor1 + valor" e depois mostra no TextBox1.

todas as outras três operações (subtração, multiplicação e divsão) estão funcionando corretamente utilizando-se a mesma lógica.

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Tente declarar as variáveis valor1, valor2 e total como integer.

Dim valor1 As Integer
Dim valor2 As Integer
Dim total As Integer

haha, acho que é isso.

Mas não sou muito confiável.

Tenta aí, mas espera a opinião de alguém mais especializado.

Até mais.

Edited by Darknnez
Link to comment
Share on other sites

  • 0
Na verdade quando você faz isto: CDbl(valor1 + valor2) você está concatenando as string e somente depois você está mudando o tipo.

Para dar certo tem que ser algo assim:

total = CDbl(cdbl(valor1) + cdbl(valor2))

a dica do decio ta 100% certa sim, mas a do darknezz tem mais sentido. afinal se você vai somar numeros, porque vai declarar como string??

so q Integer não aceita casas decimais, declare como Double, assim você não precisa ficar convertendo na hora de somar. claro, só tome cuidado pra não dexar o cara digitar texto na textbox, ponha uma validacao so pra permitir numeros.

quanto a dica do jose carlos, ela tb funciona, mas tem um problema, o val vai tirar as casas decimais do seu numero e pegar so o valor inteiro. ou seja você não vai conseguir fazer operacoes com numeros com virgulas (acho q você teria q por ponto pra ele aceitar).

declarando como double, você não precisa se preocurar com essas conversoes.

Link to comment
Share on other sites

  • 0
Guest --HClausing --

Obrigado Darknnez, mesmo convertendo as strings para double antes do calculo não dava certo, porem já armazenando como Double resolveu meu problema. Não usei Integer porque é uma calculadora e quero que ela funcione com números decimais.

Um abraço.

Link to comment
Share on other sites

  • 0
Guest --HClausing --

Obrigado também a todos vocês que responderam, me perdoem pelo flood. Aconteceu que eu deixei a página aberta na resposta do Darknnez para agradeçer, só depois de postar foi que notei que tinha recebido mais ajuda.

Realmente o melhor tipo de variável para se trabalhar é a Double.

Obrigado a Todos.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...