Ir para conteúdo


Foto

Double, Decimal Ou Float ?


  • Este tópico está fechado Este tópico está fechado
4 respostas neste tópico

#1 Beraldo

Beraldo

    Bye, Bye, Script Brasil

  • Veteranos
  • 4378 posts
  • Gender:Male

Postado 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

Postado 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
  • 4378 posts
  • Gender:Male

Postado 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

Postado 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
  • 2579 posts
  • Gender:Male
  • Location:Rio de Janeiro - RJ
  • Interests:Java, Delphi, MySql, Oracle, Aeromodelismo, Iatismo, ferromodelismo, Axis & Allies Miniatures Game

Postado 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.




2 usuário(s) está(ão) lendo este tópico

0 membros, 2 visitantes, 0 membros anônimos