elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [MYSQL] Problema con float
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [MYSQL] Problema con float  (Leído 16,870 veces)
Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
[MYSQL] Problema con float
« en: 29 Marzo 2009, 19:13 pm »

Buenas, tengo un pequeño problema que me esta volviendo loco.
En un campo float(20,2) intento insertar el numero 891985.80, pero siempre lo guarda como 891985.81
Sin embargo en otro campo igual, si es capaz de guardar cosas como 0.45 etc y no cambia el decimal.
No solo pasa con ese numero, sino que siempre hace cosas raras con decimales, como considerar que 1.42 es 2

¿Que puede ser?

Gracias :D


En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: [MYSQL] Problema con float
« Respuesta #1 en: 29 Marzo 2009, 19:33 pm »

El problema es que FLOAT no guarda precisamente cifras numericas altas sin alterarlas o redondearlas al valor mas cercano de la misma... es una deduccion de base fracionaria 10. No soy buena en matematicas lol para explicarte....

Pero aun alteraras la tabla y pongas el tipo como Double estaras supuesto a seguir sufriendo de redondear valores a sus niveles mas cercanos, aunque float solo soporte 4 bytes y double 8 me parece.

Si quieres tener cifras altas exactas sin redondeos incluidos, querras alterar ese campo al tipo Decimal o Numeric. Tendras una ligera baja en el desenvolvimiento ante las consultas SQL pero estara garantizado que tus cifras insertadas no seran redondeadas.


En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: [MYSQL] Problema con float
« Respuesta #2 en: 29 Marzo 2009, 19:37 pm »

Lo que no entiendo es si le he puesto un float 20,2 que soporta 2 decimales, y le intento meter un numero de 2 decimales que me lo intente redondear... si le intentara meter uno de 3 lo entiendo, pero no veo necesidad de redondear asi, y menos cuando hace cosas como pasar el ,80 a ,81 Pfff...

Gracias por tu respuesta.
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: [MYSQL] Problema con float
« Respuesta #3 en: 29 Marzo 2009, 19:54 pm »

Encanto escucha.

Citar
El tipo FLOAT se usa para representar tipos numéricos aproximados

Lo que Mysql te esta haciendo no esta mal, de hecho esta explicitamente explicado aqui :

http://dev.mysql.com/doc/refman/5.0/es/numeric-types.html

Porfavor, lee el link anterior y comprenderas mas detalladamente porque el tipo FLOAT redondea y DECIMAL no. Esta gente te lo explica claro y esta en espanol :)

Sobre los puntitos flotantes no confundir el tipo de dato con la cantidad de puntos flotantes y que esto sea causa de reondeo. Si yo tengo ejemplo decimal(7,2)  Y inserto un dato 450.300 el va a guardarme  450.30 Porque le estoy diciendo tengo una capacidad de guardar 7 numeros ENTEROS y 2 decimales o sea el cuenta que despues de yo colocar el puntito a mi cifra solo accepta 2 numeros mas porque así yo se lo especifique. Pero el no me esta redondeando nada, porque yo le dije solo acceptame 2 decimales despues del puntito. Pero perfectamente mi campo anterior acceptaria sin problemas 45000.20  y no lo redondearia como dices tu, que eso no se llama redondear en este caso, se llama lo que yo te peticiono que guardes.
« Última modificación: 29 Marzo 2009, 20:00 pm por ^TiFa^ » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema sencillo de una salida tipo Float en C++
Programación C/C++
ThronerAXE 4 2,859 Último mensaje 20 Diciembre 2013, 03:14 am
por rir3760
problema con la variable float « 1 2 »
Programación C/C++
SMFSM 10 5,173 Último mensaje 2 Marzo 2014, 22:48 pm
por leosansan
Problema con float y double!!!!
Programación C/C++
EdgarKrieger 6 4,047 Último mensaje 23 Mayo 2014, 01:57 am
por Blaster
Problema con undefined reference to `Shoot::Shoot(float,float)´
Programación General
nakas95 2 2,335 Último mensaje 20 Mayo 2014, 00:17 am
por nakas95
problema con asignar un float
Programación C/C++
d91 2 1,971 Último mensaje 24 Octubre 2015, 08:23 am
por do-while
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines