marioverdini Posted April 22, 2019 at 10:16 PM Report #614363 Posted April 22, 2019 at 10:16 PM 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
Gnrtuga Posted April 23, 2019 at 07:14 AM Report #614364 Posted April 23, 2019 at 07:14 AM Boas, não percebi bem o que queres... Será que é isto? https://www.portugal-a-programar.pt/forums/topic/42762-como-formatar-para-2-casa-decimais/ Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!) Nunca mais é verão outra vez.. :)
marioverdini Posted April 23, 2019 at 08:33 AM Author Report #614365 Posted April 23, 2019 at 08:33 AM sim e isso mesmo mas como eu faço a explicaçao do link que me mandou para mim esta vago
Gnrtuga Posted April 23, 2019 at 09:31 AM Report #614369 Posted April 23, 2019 at 09:31 AM 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.. :)
marioverdini Posted April 23, 2019 at 10:34 AM Author Report #614370 Posted April 23, 2019 at 10:34 AM Infelizmente nao funcionou
antseq Posted April 23, 2019 at 11:59 AM Report #614371 Posted April 23, 2019 at 11:59 AM 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
Gnrtuga Posted April 23, 2019 at 02:44 PM Report #614374 Posted April 23, 2019 at 02:44 PM 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.. :)
marioverdini Posted April 23, 2019 at 03:04 PM Author Report #614375 Posted April 23, 2019 at 03:04 PM (edited) 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 April 23, 2019 at 03:06 PM by marioverdini
antseq Posted April 23, 2019 at 03:34 PM Report #614377 Posted April 23, 2019 at 03:34 PM 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 "," ?
marioverdini Posted April 23, 2019 at 04:14 PM Author Report #614378 Posted April 23, 2019 at 04:14 PM voce tem o compilador vs2017?
Gnrtuga Posted April 23, 2019 at 04:45 PM Report #614380 Posted April 23, 2019 at 04:45 PM 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.. :)
marioverdini Posted April 23, 2019 at 04:51 PM Author Report #614381 Posted April 23, 2019 at 04:51 PM (edited) vou ver e te falo mas isso eu coloco no Sub Computer() certo? Edited April 23, 2019 at 04:59 PM by marioverdini Complemento
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now