1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Resolvido]vb 2005

Discussão em 'Programação' iniciada por Ruben_Barbosa, 17 de Novembro de 2008. (Respostas: 5; Visualizações: 783)

  1. Ruben_Barbosa

    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: 26 de Novembro de 2008
  2. SoundSurfer

    SoundSurfer Power Member

    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.
     
  3. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Não :(. alguem sabe ?
     
  4. Armadillo

    Armadillo Folding Member

    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: 18 de Novembro de 2008
  5. 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
     
  6. ribeiro55

    ribeiro55 Power Member

    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))
     

Partilhar esta Página