Jump to content
marioverdini

DECLAR DOUBLE COM DUAS CASAS DECIMAIS

Recommended Posts

marioverdini

Boa noite,Pessoal!
Eu ja pesquisei na internet,mas apear de existir muita informação sobre o tema,não encontrei nada de que preciso:
mas pelo que eu li não existe nenhum tipo de variável no .Net que faça isso, é algo terei que fazer manualmente.
pelo metodo Math.Round(valor, 2) esta me arredondando o valor no final teria algum outro metodo?
 

Sub Compute()
        Dim i As Double = 0
        Dim j As Double = 0
        j = Val((Val(txtSubTotal.Text) * Val(txtTaxPer.Text)) / 100)
        j = Math.Round(j, 2)
        txtTaxAmount.Text = j
        i = Val(txtSubTotal.Text) + Val(txtTaxAmount.Text)
        i = Math.Round(i, 2)
        txtGrandTotal.Text = i
    End Sub

Share this post


Link to post
Share on other sites
marioverdini

sim e isso mesmo mas como eu faço a explicaçao do link que me mandou para mim esta vago

Share this post


Link to post
Share on other sites
Gnrtuga

FormatNumber(Numero_a_Formatar, 2

FormatNumber(txtSubTotal.Text, 2)

É só meteres qual o valor, ou nome da caixa de texto a ser formatado dentro dos parênteses e depois da vírgula colocar o número de casa decimais que queres.


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites
antseq

Exactamente o que não funciona?

Estive a experimentar este código (semelhante ao seu) e parece-me correcto:

	Public Sub Main()
        Dim taxAmount As Double = 0
        Dim grandTotal As Double = 0
        taxAmount = Val((Val("123") * Val("23")) / 100)
        taxAmount = Math.Round(taxAmount, 2)
        System.Console.WriteLine("taxAmount = " & taxAmount)
        grandTotal = Val("123") + taxAmount
        grandTotal = Math.Round(grandTotal, 2)
        System.Console.WriteLine("grandTotal = " & grandTotal)
	End Sub

taxAmount = 28.29
grandTotal = 151.29

 

Share this post


Link to post
Share on other sites
Gnrtuga

Não funcionou, mas devia ter funcionado...

Fiz o seguinte teste:

Sub Main()
        'teste 1
        Dim numero As Double
        numero = 3.143456788
        Dim novo_numero As Double
        novo_numero = FormatNumber(numero, 2)
        Console.WriteLine(novo_numero)
  		´teste 2
        Dim imposto As Double
        Dim valor_sem_imposto As Double
        Dim valor_com_imposto As Double
        valor_sem_imposto = 150
        imposto = 23
        valor_com_imposto = valor_sem_imposto + (imposto * valor_sem_imposto / 100)
  		Console.WriteLine(FormatNumber(valor_com_imposto, 2))	
        


        Console.Read()

    End Sub

E funciona bem...

Não te terás enganado em nada?

Aqui a única diferença é que não converti o texto das TextBox para número, porque forneci logo os números. No teu caso só tens que converter o valor das TextBox para número e fica igual.

P.S. Nota que não instanciei logo o valor das variáveis, experimenta fazer o mesmo no teu código


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites
marioverdini

atencao que as variaveis recebem numero variaveis

lembrando que o retorno dessas operaçoes matematicas estao retornando inteiro quero que o sistema retorne valor exato EX: subTotal 145.98

Edited by marioverdini

Share this post


Link to post
Share on other sites
antseq

Viva,

Não estás a tentar fazer "Val" de caixas de texto, com valores "já formatados" com separadores decimais (idioma/região) do sistema?

	Public Sub Main()
		Dim subTotal As Double = 0
		subTotal = Val("123.45")
        System.Console.WriteLine("subTotal 1 = " & subTotal)
		subTotal = Val("123,45")
        System.Console.WriteLine("subTotal 2 = " & subTotal)
	End Sub

OUTPUT:
subTotal 1 = 123.45
subTotal 2 = 123

No exemplo acima, dependendo da região/país onde corres a tua aplicação, tanto poderia ler "123.45" ou apenas "123".
Nas tuas caixas de texto, tens o separador decimal com "." ou "," ?

Share this post


Link to post
Share on other sites
Gnrtuga

Bem, tomando o teu exemplo e acho que não me enganei nos nomes das variáveis, faz o seguinte no evento do Button_Click onde vais chamar o Sub Compute() chama antes este:

Sub teste_conversao()
        Dim SubTotal, TaxPer, TaxAmount, ValorTotal As Double
        SubTotal = CDbl(Val(txtSubTotal.Text))
        TaxPer = CDbl(Val(txtTaxPer.Text))
        TaxAmount = CDbl(Val(txtTaxAmount.Text))
        ValorTotal = SubTotal + (SubTotal * TaxPer / 100)
        txtGrandTotal.Text = FormatNumber(ValorTotal, 2)
    End Sub

e vê lá se não vai dar o que pretendes

p.s confere se os nomes das textbox estão certos


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites
marioverdini

vou ver e te falo

mas isso eu coloco no 
Sub Computer() 

certo?

 

Edited by marioverdini
Complemento

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.