Array
(
)

Tipo de dado para dinheiro

Rafaela Sousa
   - 14 nov 2015

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

Jothaz
   - 15 nov 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.

0
|
0

Rafaela Sousa
   - 15 nov 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?

0
|
0

Felipe Martins
   - 15 nov 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:
#Código

$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:
#Código
$numero1 = "1.00";
$numero2 = "2.50";

$resul = $numero1+$numero2;
$result = number_format($result,2, ',', '.');

echo $result; // result será "3,50"

0
|
0

Rafaela Sousa
   - 15 nov 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?

0
|
0

Douglas Noronha
   - 16 nov 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.

0
|
0

Rafaela Sousa
   - 16 nov 2015

Mas em termos de grandeza e quantidade esses tipos irão satisfazer?

0
|
0

Douglas Noronha
   - 16 nov 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

0
|
0

Jothaz
   - 16 nov 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:

Citação:

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

0
|
0

Rafaela Sousa
   - 16 nov 2015

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

0
|
0