Tipo de dado para dinheiro

14/11/2015

205

Qual o tipo de dado recomendado para dinheiro com PHP e o MySQL?
Responder

Post mais votado

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:
$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"

Responder

Mais Posts

15/11/2015

Jothaz

Na tabela MySQL pode ser DECIMA, DOUBLE ou FLOAT dependendo da precisão e controle desejado.

E você formata (number_format()) na aplicação.
Responder

15/11/2015

Rafaela Sousa

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?
Responder

15/11/2015

Rafaela Sousa

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?
Responder
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.
Responder

16/11/2015

Rafaela Sousa

Mas em termos de grandeza e quantidade esses tipos irão satisfazer?
Responder
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
Responder

16/11/2015

Jothaz

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
Responder

16/11/2015

Rafaela Sousa

Melhores explicações, agradeço aos senhores.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar