Usuário com melhor resposta
Problema com casas de decimais SQLSERVER

Pergunta
-
Olá Pessoal, estou com o seguinte problema:
Eu tenho um campo Float no SQLSERVER, e minha aplicação acessa dados via Entity Framework.
Quando eu insiro um dado no banco (via objeto do entity) o campo float gera varias casas decimais, sempre com 0,1 amenos ou a. Exemplo:
Eu insiro 3, no banco fica 3 (CORRETO)
Eu insiro 3.1 no banco fica 3,0999999999132131 (depois dos noves os valores variam)
Eu insiro 3.9 no banco fica 3,90000000001233232 (depois dos noves os valores variam)
Por que isso acontece ? Como resolver este problema ?
Obrigado!
Ao infinito e além!
Respostas
-
Amigo, fiz o que você disse e ESTÁ no padrão 53.
Seguem os campos:
Espaco float no 8 53 NULL no (n/a) (n/a) NULL
Repeticao float no 8 53 NULL no (n/a) (n/a) NULLO problema continua, acredito que possa ser algo do entity framework, para inserir os dados eu dou um float.parse em um textbox, e o campo do data model está marcado como Single, ja mudei o campo para double, mas não obtive sucesso.
Obrigado!
Ao infinito e além!Amigo
Campos do tipo float no sql server sempre irão produzir resultados aproximados. Se vc planejava gravar algum tipo de valor (seja ele qual for) neste campo, sugiro fortemente o uso do tipo decimal, já que ele não "aproxima" o resultado, como o tipo float faz.
Vc pode ler mais sobre float/decimal, e várias pessoas reclamando do mesmo erro que o seu, neste link
[]s
- Marcado como Resposta Fabio R. Luz domingo, 10 de abril de 2011 05:58
Todas as Respostas
-
Amigo, pode ser que a precisão do seu campo float esteja diferente do padrão 53 http://msdn.microsoft.com/en-us/library/ms173773.aspx
faça assim: abra o seu sql server, digite:
verifique se o campo precisão está em 53 para o campo floatuse NOMEDOBANCO go sp_help NOMEDATABELA
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :) -
Amigo, fiz o que você disse e ESTÁ no padrão 53.
Seguem os campos:
Espaco float no 8 53 NULL no (n/a) (n/a) NULL
Repeticao float no 8 53 NULL no (n/a) (n/a) NULLO problema continua, acredito que possa ser algo do entity framework, para inserir os dados eu dou um float.parse em um textbox, e o campo do data model está marcado como Single, ja mudei o campo para double, mas não obtive sucesso.
Obrigado!
Ao infinito e além! -
Amigo, fiz o que você disse e ESTÁ no padrão 53.
Seguem os campos:
Espaco float no 8 53 NULL no (n/a) (n/a) NULL
Repeticao float no 8 53 NULL no (n/a) (n/a) NULLO problema continua, acredito que possa ser algo do entity framework, para inserir os dados eu dou um float.parse em um textbox, e o campo do data model está marcado como Single, ja mudei o campo para double, mas não obtive sucesso.
Obrigado!
Ao infinito e além!Amigo
Campos do tipo float no sql server sempre irão produzir resultados aproximados. Se vc planejava gravar algum tipo de valor (seja ele qual for) neste campo, sugiro fortemente o uso do tipo decimal, já que ele não "aproxima" o resultado, como o tipo float faz.
Vc pode ler mais sobre float/decimal, e várias pessoas reclamando do mesmo erro que o seu, neste link
[]s
- Marcado como Resposta Fabio R. Luz domingo, 10 de abril de 2011 05:58
-
Obrigado amigo! Resolveu meu problema. Eu cheguei a pensar na possibilidade do float aproximar por característica própia, mas não acreditei que o banco faria isso, porque até então, para mim, isso não teria sentido.... Mas enfim, parece que é assim neh? Então ta^^
Obrigado!
Ao infinito e além!