Tipo de dado para dinheiro
Qual o tipo de dado recomendado para dinheiro com PHP e o MySQL?
Rafaela Sousa
Curtidas 0
Melhor post
Felipe
15/11/2015
se tu for salvar no mysql, salva como VARCHAR, mas lembre o formato decimal é com ponto e nao com virgula, quando vc for recuperar vc apenas soma os valores
em um campo input text vc está digitando uma string se vc somar duas strings com numeros elas serão somadas como numeros.
ex:
para vc exibir o numero no formato 3,50 é preciso usar a função number_format($result,2, ',', '.') ou seja, vc vai trocar o ponto pela virgula e exibir duas casas decimais na variavel $result
ex:
em um campo input text vc está digitando uma string se vc somar duas strings com numeros elas serão somadas como numeros.
ex:
$numero1 = "1.00"; $numero2 = "2.50"; $resul = $numero1+$numero2; echo $result; // result será "3.5"
para vc exibir o numero no formato 3,50 é preciso usar a função number_format($result,2, ',', '.') ou seja, vc vai trocar o ponto pela virgula e exibir duas casas decimais na variavel $result
ex:
$numero1 = "1.00"; $numero2 = "2.50"; $resul = $numero1+$numero2; $result = number_format($result,2, ',', '.'); echo $result; // result será "3,50"
GOSTEI 1
Mais Respostas
Jothaz
14/11/2015
Na tabela MySQL pode ser DECIMA, DOUBLE ou FLOAT dependendo da precisão e controle desejado.
E você formata (number_format()) na aplicação.
E você formata (number_format()) na aplicação.
GOSTEI 0
Rafaela Sousa
14/11/2015
Geralmente para contabilidade de numeros significativos, para não ocorrer erros ou problemas, em outras palavras qual o que suporta uma gama maior de numeração?
GOSTEI 0
Rafaela Sousa
14/11/2015
Felipe, obrigada e me desculpe, não entendi, você citou o VARCHAR e em seguida o formato decimal, eu uso qual?
Para melhor entender, no banco qual o tipo e no mysql?
Para melhor entender, no banco qual o tipo e no mysql?
GOSTEI 0
Douglas Noronha
14/11/2015
Não use VARCHAR para salvar número no banco de dados.
O melhor é usar INT, DECIMAL, DOUBLE ou FLOAT, dependendo do valor ou precisão como o Jothaz falou.
Caso precise fazer cálculo com esses números, faça diretamente no banco e se estiver como VARCHAR, não vai funcionar.
O melhor é usar INT, DECIMAL, DOUBLE ou FLOAT, dependendo do valor ou precisão como o Jothaz falou.
Caso precise fazer cálculo com esses números, faça diretamente no banco e se estiver como VARCHAR, não vai funcionar.
GOSTEI 0
Rafaela Sousa
14/11/2015
Mas em termos de grandeza e quantidade esses tipos irão satisfazer?
GOSTEI 0
Douglas Noronha
14/11/2015
Perfeitamente
Se for usar número fracionário
Pode utilizar DECIMAL(M,D), FLOAT(M,D),NUMERIC(M,D),DOUBLE(M,D)
M = o tamanho do valor
D = precisão
Exemplo
salario DECIMAL(5,2) 999.99
Se for usar número fracionário
Pode utilizar DECIMAL(M,D), FLOAT(M,D),NUMERIC(M,D),DOUBLE(M,D)
M = o tamanho do valor
D = precisão
Exemplo
salario DECIMAL(5,2) 999.99
GOSTEI 1
Jothaz
14/11/2015
Como o DOUGLAS NORONHA alertou esqueça o VARCHAR, pois até pode funcionar, mas é uma grande gambiarra usá-lo para armazenar números. Afinal o banco de dados provê os tipos corretos para armazenar qualquer tipo de número.
Se for números com muitos dígitos e decimais, principalmente monetário, use DECIMAL
Mais detalhes sobre os tipos:
TinyInt: é um número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -128 até 127. Sem signo, a margem de valores é de 0 até 255
Bit ou Bool: um número inteiro que pode ser 0 ou 1.
SmallInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -32768 até 32767. Sem signo, a margem de valores é de 0 até 65535.
MediumInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -8.388.608 até 8.388.607. Sem signo, a margem de valores é de 0 até 16777215.
Integer, Int: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -2147483648 até 2147483647. Sem signo, a margem de valores é de 0 até 429.496.295
BigInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807. Sem signo, a margem de valores é de 0 até 18.446.744.073.709.551.615.
Float: número pequeno em vírgula flutuante de precisão simples. Os valores válidos vão desde -3.402823466E+38 até -1.175494351E-38,0 eté desde 175494351E-38 até 3.402823466E+38.
xReal, Double: número em vírgula flutuante de dupla precisão. Os valores permitidos vão desde -1.7976931348623157E+308 até -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 até 1.7976931348623157E+308
Decimal, Dec, Numeric: Número em vírgula flutuante desempacotado. O número armazena-se como uma cadeia. Ex: DECIMAL(10,2)
Fonte
Se for números com muitos dígitos e decimais, principalmente monetário, use DECIMAL
Mais detalhes sobre os tipos:
TinyInt: é um número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -128 até 127. Sem signo, a margem de valores é de 0 até 255
Bit ou Bool: um número inteiro que pode ser 0 ou 1.
SmallInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -32768 até 32767. Sem signo, a margem de valores é de 0 até 65535.
MediumInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -8.388.608 até 8.388.607. Sem signo, a margem de valores é de 0 até 16777215.
Integer, Int: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -2147483648 até 2147483647. Sem signo, a margem de valores é de 0 até 429.496.295
BigInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807. Sem signo, a margem de valores é de 0 até 18.446.744.073.709.551.615.
Float: número pequeno em vírgula flutuante de precisão simples. Os valores válidos vão desde -3.402823466E+38 até -1.175494351E-38,0 eté desde 175494351E-38 até 3.402823466E+38.
xReal, Double: número em vírgula flutuante de dupla precisão. Os valores permitidos vão desde -1.7976931348623157E+308 até -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 até 1.7976931348623157E+308
Decimal, Dec, Numeric: Número em vírgula flutuante desempacotado. O número armazena-se como uma cadeia. Ex: DECIMAL(10,2)
Fonte
GOSTEI 0
Rafaela Sousa
14/11/2015
Melhores explicações, agradeço aos senhores.
GOSTEI 0