Ir para conteúdo
Fórum Script Brasil
  • 0

Uai... O Que Está Dando Errado?


Guest --HClausing --

Pergunta

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 para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 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.

Editado por Darknnez
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...