Ir para o conteúdo
D3POD

Conversor de Moedas - Casas Decimais

Mensagens Recomendadas

D3POD    1
D3POD

Boa tarde, estou a criar uma aplicação muito simples para uso diário... um converosr de moedas.

A minha ideia é criar algo prático e simples, mas futuramente irei colocar mais opções como alteração do valor de câmbio num menu e mesmo colocar mais modas.

Para já está bastante simples, consiste num ecrã... com 3 tipos de moedas (Kuanza, Euro, Dolar) ao escolher um tipo de moeda é aberto outro form no qual colocamos o valor que queremos converter e à frente aparece o valor convertido.

O meu problema é que o valor aparece com imensas casas decimais e queria que apenas aparecessem duas...

Já utilizei o Format e outros mas não estou a conseguir colocar como quero... a unica coisa que consegui mais parecido foi que fica-se duas casas decimais mas a zero 0.00

Este é o código que estou a usar...

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

       'calculo dos dolares
       Dim a As Double

       a = Val(TextBox1.Text) 'valor introduzido
       Dim b As Single
       b = 98 'cambio kuanza
       Label2.Text = Decimal.op_Division(a, b) 'divisão

       'calculo dos euros
       Dim c As Single
       c = 143 'cambio euro
       Label3.Text = Decimal.op_Division(a, c) 'divisão


   End Sub

Já agora aceito sugestões para melhorar :)

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Andrepereira9    4
Andrepereira9

Boas

Experimenta assim:

'calculo dos dolares
Dim a As Double

a = Val(TextBox1.Text) 'valor introduzido
Dim b As Single
b = 98 'cambio kuanza
'Label2.Text = Decimal.op_Division(a, b) 'divisão
Label2.Text = FormatNumber(Decimal.op_Division(a, b), 2) 'o 2 significa o número de casas a seguir à virgula

'calculo dos euros
Dim c As Single
c = 143 'cambio euro
'Label3.Text = Decimal.op_Division(a, c) 'divisão
Label3.Text = FormatNumber(Decimal.op_Division(a, c), 2)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
aesp    3
aesp

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        '// Declaração de variáveis
        Dim valor As Double
        Dim cambioKuanza As Integer = 98
        Dim cambioDollar As Integer = 143

        '// Obtem valor da textbox
        valor = Convert.ToDouble(TextBox1.Text)

        '// Apresenta o valor na Label2 formatando o valor para duas casa decimais
        Label2.Text = (Math.Round((valor / cambioKuanza), 2))
        Label3.Text = (Math.Round((valor / cambioDollar), 2))
    End Sub

Tentei simplificar um pouco o teu código, como utilizar nomes mais sugestivos para as variáveis. Em relação à formatação das casa decimais podes utilizar o Math.Round é um método da classe Math.

Por exemplo:

Math.Round(valorPretendido, numeroCasasDecimais)

Abraço.  :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
D3POD    1
D3POD

Muito obrigado a todos ;) A primeira ajuda chegou, mas agradeço a todos porque é assim que se aprende, com várias hipoteses.

Vou também seguir o conselho de colocar as coisas mais bem esclarecedoras com o nome das variaveis :)

Já agora qual a diferença entre Math.round e o formatnumber?

Muito obrigado :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
aesp    3
aesp

Nunca utilizei o FormatNumber, mas pelo que li por alto, parece-me que consegues aplicar mais "formatações" ao valor, mas no final penso que dará tudo ao mesmo, de qualquer das formas o Math.Round() parece-me o método mais comum.

Mas podes sempre dar uma olha dela aqui.

Abraço.  ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

O FormatNumber é uma função que está no namespace Microsoft.VisualBasic, ou seja, é utilizada apenas em VB enquanto que a classe Math está em System, esta é comum entre VB e C#.

Dentro do namespace Microsoft.VisualBasic estão algumas funções que existiam no antigo VB6, penso que foram mantidas para facilitar a adaptação dos programadores de VB6 para VB.NET.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

Math.Round não serve para formatar coisa nenhuma. A diferença é essa ;)

Math.Round arredonda o decimal que lhe deres, para tantas casas quantas lhe pedires se existirem algarismos significativos, e não o faz deixar de ser decimal.

Observa os seguintes exemplos:

Math.Round(1.26D, 1) '=1.3  Decimal
Math.Round(1.26D, 2) '=1.26  Decimal
Math.Round(1.26D, 3) '=1.26  Decimal
Math.Round(1.26D, 4) '=1.26  Decimal
Math.Round(1.26D, 5) '=1.26  Decimal

Ao passo que se utilizares um formatador de Strings não interessa se existem algarismos significativos, exemplos:

FormatNumber(1.26D, 1) '=1.3  String
FormatNumber(1.26D, 2) '=1.26  String
FormatNumber(1.26D, 3) '=1.260  String
FormatNumber(1.26D, 4) '=1.2600  String
FormatNumber(1.26D, 5) '=1.26000  String

Por último, procura não usar o namespace VisualBasic. Existem outros métodos na framework que fazem o mesmo (por exemplo o próprio ToString de qualquer tipo numérico/decimal).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
D3POD    1
D3POD

Math.Round não serve para formatar coisa nenhuma. A diferença é essa :)

Math.Round arredonda o decimal que lhe deres, para tantas casas quantas lhe pedires se existirem algarismos significativos, e não o faz deixar de ser decimal.

Observa os seguintes exemplos:

Math.Round(1.26D, 1) '=1.3  Decimal
Math.Round(1.26D, 2) '=1.26  Decimal
Math.Round(1.26D, 3) '=1.26  Decimal
Math.Round(1.26D, 4) '=1.26  Decimal
Math.Round(1.26D, 5) '=1.26  Decimal

Ao passo que se utilizares um formatador de Strings não interessa se existem algarismos significativos, exemplos:

FormatNumber(1.26D, 1) '=1.3  String
FormatNumber(1.26D, 2) '=1.26  String
FormatNumber(1.26D, 3) '=1.260  String
FormatNumber(1.26D, 4) '=1.2600  String
FormatNumber(1.26D, 5) '=1.26000  String

Por último, procura não usar o namespace VisualBasic. Existem outros métodos na framework que fazem o mesmo (por exemplo o próprio ToString de qualquer tipo numérico/decimal).

pelo que percebi o maior problema é se por exemplo estiver a fazer a divisão de um numero que de 1.34 e lhe pedir 4 casas decimais... no math.round ele vai ficar 1.34 e no formatnumber vai acrescentar 2 zeros... 1.3400

certo?

Já agora (e a minha mensagem anterior desapareceu) como posso criar um executavel?

Eu antes sabia criar com o winrar qualquer coisa com o SFX mas agora não sei... quer dizer eu criar crio, mas depois quando executa não faz nada ;)

algum tutorial?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

Isso não é problema porque 1.34 é rigorosamente o mesmo que 1.3400.

O problema é que formatando a String, obtens uma String.

Formatadores de string só devem ser usados para apresentar valores e não para trabalhar valores para calcular.

Ou seja, calculas com a classe Math, e no final mostras ao utilizador com o formato que quiseres.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
D3POD    1
D3POD

Já agora, como posso fazer para que quando introduzimos um valor e clicamos enter, ele faça a conversão?

Ou seja dar um função à tecla enter?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
D3POD    1
D3POD

Eu tenho um textbox onde coloco o valor que quero converter... mas queria que quando desse "enter" que ele fizesse a coversão, em vez de ter que ir clicar no botão "converter"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade