julioczg 0 Denunciar post Postado Maio 31, 2014 Boa tarde, Estou tentando fazer um cálculo direto no mysql. Minha função é simples, tenho dados ordenados por data e desejo fazer uma multiplicação em todos os dados quando a data for menor do que uma determinada data. Ex.: UPDATE tabela SET valor = (10000 * valor) WHERE data <= '2004-03-19'; Valor é um campo numeric(12,10), Ao executar esse comando o valor inicial que era de 0,012332 vira 99,999999, sendo que o certo seria 123,32. Em alguns casos ele funciona, porém nesse em específico está gerando esse valor de 99,99999999. Alguém sabe o motivo desse cálculo errôneo? Seria o tipo de dados que estou usando? Abraço a todos Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Xavier 189 Denunciar post Postado Maio 31, 2014 Altere o campo para (12,9), se não estou enganado é o 9 dígitos após a virgula é o limite. Faça um teste para certificar-se. Documentação http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-characteristics.html Dá uma lida nesse tópico do S.O. http://stackoverflow.com/questions/4834390/how-to-use-mysql-decimal Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Junho 2, 2014 O primeiro parâmetro (12) é a quantidade de caracteres, e o segundo (9) é a quantidade após a virgula, portanto, se quiser somente duas casas decimais deveria ser (12,2). Compartilhar este post Link para o post Compartilhar em outros sites