Entre para seguir isso  
Seguidores 0

Double, Decimal Ou Float ?

5 posts neste tópico

Postado

Estou catalogando os produtos do meu site e preciso colocar os preços dos produtos. Já tentei usar DOUBLE(3,2). FLOAT(3,2), DECIMAL(3,2) e simplesmente DOUBLE; mas todos dão erro ao adicionar valores como '29,90'. Estou fazendo algo de errado?

Se alguém puder me explicar quando e como usar cada um desses três tipos de campo para números, agradeço muito! =)

E outra coisa: um amigo meu me disse de um outro tipo de campo, o NVARCHAR. Qual é a diferença dele para um VARCHAR? Qual é a vantagem de usar o NVARCHAR no lugar do VARCHAR?

Valeu

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado

não sei bem a diferenca entre double e float, mas sei que decimal suporta um grande numero de casas decimais (por isso o nome). aconselho você a usar double, porque quando eu usava float no sql, tinha uns problemas de arredondamento.

você não consegue mesmo inserir valores '29,90' via INSERT, o certo seria '29.90' (e sem '), porque virgula serve pra separar campos.

tipo assim, em campo texto você pode por 29,90 do jeito que você fez normal, pois vai vir entre ''. agora em campo numero, você tem que por sem separador de milhar e com ponto como separador de casa decimal:

Insert Into Tabela(Texto1, Texto2, Double1, Double2, Texto3) Values('a','29,90',29.90,1000.25,'xxx')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado

Mas quando eu expouser na tela o preço de um produto, ele será exibido com um ponto para separar os centavos, e não com vírgula. Como faço para solucionar esse problema? Se eu usar um explode(".", $preço) dá certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado

Pela função explode, creio que está usando PHP...

Usa um number_format (http://php.net/number_format) para formatar do jeito que precisa para mostrar e um str_replace (http://php.net/str_replace) para substituir a virgula por ponto para inserir no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postado

Beraldo,

Os tipos NUMERIC e DECIMAL Estão obsoletos nas versões 5.x en diante.

Para tipo flutuante use double.

O MySQL usa ponto para casa decimal e não vírgula.

Você pode usar a função replace direto em sua instrução sql. Assim:

select replace(valor,'.',',') from preço

O Mysql converterá de numerico para string automaticaamente, mas não poderá fazer cálculos com ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
Seguidores 0