JonatasFn 0 Denunciar post Postado Abril 25, 2008 Bom dia, sou iniciante e já pesquisei em todo lugar e ainda não encontrei. Tenho a seguinte dúvida: Tenho uma tabela no MySQL chamada vendas nela eu tenho um campo chamado valor. Eu já estou fazendo a consulta normalmente e exibindo o total de todos os valores com SUM. Até aí tudo bem. O meu problema é que quando cadastro um valor decimal: 10,20 e depois outro valor 10,80 o resultado dá 20 e não 21,00. Qual é o campo que devo usar? Float? Double? notei q quando uso DOUBLE funciona, mas usando "."(ponto) para separar e não vírgula. Existe alguma máscara para isso? Desde já agradeço! Compartilhar este post Link para o post Compartilhar em outros sites
Otata 4 Denunciar post Postado Abril 25, 2008 eae, double cara, no banco eh sempre com ponto, na hora de cadastrar você troca a virgula por ponto pra nao dar erro, e nda hora de buscar você tbm troca pra apresentar os dados...t+ Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Abril 26, 2008 O correto é você usar o '.' pra separar os decimais. Movido: PHP=>MySQL Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Abril 26, 2008 Olá Pessoal, Uma boa discussão... as coisa iam bem até que li que vocês estão utilizando tipos de dados DOUBLE para armazenar valores monetários. Por favor, não façam isso... existem sérios problemas com os tipos DOUBLE e FLOAT em relação à arredondamentos, portanto, para armazenar valores monetários. Imagine que num dia feliz o seu supervisor lhe solicita um novo relatório sobre as vendas do mês de outubro e deseja que ao final do mesmo ou, ainda, a cada linha seja feita uma agregação (agrupamento) de valores com, por exemplo, um SUM() (função SQL chamada Função de Agregação para somar valores de uma coluna passada como parâmetro, ex.: "SELECT SUM(VALOR) FROM produto;"). Bom "carinha", aí seus problemas se iniciam, pois, o que é 0.9987, pode se tornar 1 e para 10 produtos isso já faz muita diferença. DOUBLE e FLOAT são tipos de dados de PONTO FLUTUANTE que armazenam números de precisão científica ou mesmo de linguagem de máquina e, por isso, são extremamente mais rápidos que qualquer outro tipo de dado que possa armazenar decimais, mas NUNCA utilzem estes para valores monetários. Ao contrário disso, utilize DECIMAL para tais dados pois este último de dados é um tipo tido como um tipo de dado de PONTO FIXO, ou seja, não apresenta problemas de arredondamento. É mais lento, mais seguro e ocupa espaço em disco similar ao tipo CHAR. Valor monetário, DECIMAL(10,2) => 10 posições antes do ponto e 2 posições que representarão os centavos! Happy MySQL'ing 4 all!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites