Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Float

Recommended Posts

Nos campos Valores dos Tipos o sistema não esta entendendo valores acima de 999,00

Ou seja exemplo:


Se um tipo tem o valor de 1500,00 ele entende que o valores é de 15,00


No MySQL, eu cadastrei o campo que é de moeda como apenas float. Não como float(10,2) ou outra notação. Simplesmente float.


O que posso fazer para corrigir esse problema sem afetar os dados já gravados anteriormente?


Outro problema que estou tendo é que estou gravando no banco todos os valores com ponto e não com virgula.


Tipo, dez reais e quarenta centavos.


Estou gravando 10.40 e não 10,40.


Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

ALTER TABLE {nome_da_tabela}
MODIFY {campo_float} FLOAT(10,2)

Se não estou enganado, o MySQL faz a alteração no tipo do campo sem ter que excluir nenhuma linha, poderia perder alguma informação se mudasse de um VARCHAR para INT, ou algo do tipo, mas como é FLOAT para FLOAT, ele deve interpretar corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. mas quando faço isso, o site que já esta gravando todos os valores com ponto em vez de virgula, terá que ser tudo alterado.

 

Então pensei em um tipo do mysql que guardasse numeros em ponto flutuante que usasse ponto em vez de virgula.

 

Será que existe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Número decimal é usado somente com ponto, para gravar o valor com vírgula somente em campo texto, o que não é correto.

 

Mas você pode trabalhar livremente com ponto no banco de dados, e manipula a informação somente na hora de exibir, assim como, para gravar o valor, deve ser manipulado transformando o valor para que o MySQL funcione corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, mas quando vou alterar no phpmyadmin de float para decimal(10.2) ele cria decimal(10.00)

 

Só aceita decimal(10,2) se for com virgula.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem, quero dizer que o tipo do campo deve ser separado com vírgula, mas os dados são, obrigatoriamente, tratados com ponto separando o decimal, esse tipo DECIMAL(10,2) quer dizer que os valores do campo são do tipo número com até 10 casas antes do ponto (separador decimal), e duas casas após o ponto.

 

Para definir o tipo do campo é, por exemplo, 'valor_compra DECIMAL(10,2) NOT NULL DEFAULT 0'.

 

Os valores aceitos podem chegar até 999999999.99 (separado por ponto, isso no valor do campo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então quer dizer que mesmo eu fazendo no mysql o campo como

 

DECIMAL(10,2)

 

Com virgula ao invés de ponto, dá pra guardar lá um valor por exemplo: 153454.34

 

153454.34

 

Ao invés de

 

153454,34

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está fazendo certo!

 

O que não está entendendo é que os parâmetros do tipo do campo são separados por vírgula, mas os valores armazenados no campos devem sempre ser com ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah!

 

Agora entendi!

 

float(10,2)

 

Isso trará um numero padrão gravado no formato

 

0.00

 

Acertei?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.