[Resolvido]vb 2005

Ruben_Barbosa

Power Member
ola pessoal é o seguinte:


Código:
Y = Text2(5).Text
X = Text2(6).Text
                Text2(4).Text = Replace(Text2(4).Text, ",", ".")
                Text2(4).Text = (Y) * (Y) * (X) * (0.07958)
                Text2(4).Text = Replace(Text2(4).Text, ",", ".")
Este é o codigo que eu uso para calcular o volume , so que tou com um pequeno problema por exemplo se meter no y = 3.20 e o meu x = 8.80 o Resultado da-me 71777777,17 e eu queria meter o o resultado em 7,177.

Esquecam o Format number lol já testei e não da :(
 
Última edição:
em vez do (X) por exemplo faz Convert.ToDouble(X), para que a conversão fique bem feita...

Atenção que, conforme as "Regional Settings" do sistema operativo, o caractere dos decimais pode ser a vírgula ou o ponto.
 
isto é em VB6, mas deve dar para o vb8
Código:
x = FormatNumber(71777777.17 / 10000000, 3)
atenção que ele arredonda para 7.178



edit:
Outra coisa que podes fazer é

Código:
x = left(cStr(71777777.17 / 10000000),5)
e este já nao arredonda ;)

Agora, tens que adaptar o código para fazer isto sem ser hardcoded

cumps
 
Última edição:
Viva.
Se percebi bem, o problema só está no separador das casas decimais.
Na maior parte dos países o separador é o ponto mas penso que no nosso é mesmo a virgula.

Podes comprovar isso fazendo um print desta função:

Public Function DecimalSeparator() As String
DecimalSeparator = Mid$(1 / 2, 2, 1)
End Function


Se for o caso, como o ponto nas nossas definições regionais é para os milhares, estás a usar Y=880 ; X=320 e não os 8,8 e os 3,2.

Não tenho a certeza, mas vê se não existe uma propriedade no controlo (textbox) que te permita definir qual o separador de decimais.... caso contrário vê se o vb não tem outro controlo para usares em vez da textbox.

Espero ter sido útil.
Hélio
 
Que valente baralhada que para ali vai.

Sempre disse, e volto a dizer que os verdadeiros alicerces de uma aplicação assentam na boa aplicação de data types.
Usar caixas de texto para executar cálculos é mau. Não ser avisado de problema com data types e executar mal e porcamente é tããão vb6. Ainda que arrays de controlos e o nome padrão "Text1" para as textboxes seja típico do VB6 e não VB2005 como o tópico sugere. Arrays de controlos morreram já com o VB7, e graças a Deus, o VB deu mais um passo em direcção da OOP toda poderosa.

Esta solução escrita para a framework, e sobre a framework calcula-te o volume, sem parcelas hardcoded, arredonda-te o valor e troca-te os pontos para vírgulas, à preguisoço, mas serve para o efeito.

Código:
        Dim Altura As Double = 0
        Dim Largura As Double = 0
        Dim Comprimento As Double = 0
        Dim Digitos As Integer = 3

        Altura = CDbl(Trim(Replace(TextBox1.Text, ".", ",")))
        Largura = CDbl(Trim(Replace(TextBox2.Text, ".", ",")))
        Comprimento = CDbl(Trim(Replace(TextBox3.Text, ".", ",")))

        MsgBox(Math.Round(Altura * Largura * Comprimento, Digitos))
 
Back
Topo