Jump to content


Photo

Double, Decimal Ou Float ?


  • This topic is locked This topic is locked
4 replies to this topic

#1 Beraldo

Beraldo

    Bye, Bye, Script Brasil

  • Veteranos
  • 4380 posts
  • Gender:Male

Posted 03 May 2006 - 11:09 AM

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

Roberto Beraldo Chaiben

http://rberaldo.com.br

 

 

 


#2 kuroi

kuroi
  • Membros
  • 7410 posts

Posted 06 May 2006 - 23:28 PM

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:
CODE
Insert Into Tabela(Texto1, Texto2, Double1, Double2, Texto3) Values('a','29,90',29.90,1000.25,'xxx')


#3 Beraldo

Beraldo

    Bye, Bye, Script Brasil

  • Veteranos
  • 4380 posts
  • Gender:Male

Posted 07 May 2006 - 10:15 AM

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?

Roberto Beraldo Chaiben

http://rberaldo.com.br

 

 

 


#4 REFFER

REFFER
  • Membros
  • 2 posts

Posted 04 May 2009 - 16:19 PM

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.

#5 Denis Courcy

Denis Courcy

    Moderador MySQL [VOLUNTÁRIO]

  • Moderadores
  • 2746 posts
  • Gender:Male
  • Location:Rio de Janeiro - RJ
  • Interests:Java, Delphi, MySql, Oracle, Aeromodelismo, Iatismo, ferromodelismo, Axis & Allies Miniatures Game

Posted 04 May 2009 - 16:33 PM

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:
CODE
select replace(valor,'.',',') from preço
O Mysql converterá de numerico para string automaticaamente, mas não poderá fazer cálculos com ela.
att
Denis Courcy

A troca do conhecimento é a unica forma de expandirmos o mesmo.
"Se enxerguei mais longe que outros homens, foi porque me ergui em ombros de gigantes"
Isaac Newton - 1676

Atenção:
Não respondo questões via MP.
Antes de Perguntar RFM (Read F. Manual)
Se você colocou um novo tópico e se satisfez com a(s) resposta(s) dada(s) então, por favor, responda para que
possamos colocar o tópico como resolvido e assim auxiliar, mais ainda, outras pessoas.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users