Comunidad de diseño web y desarrollo en internet online

Problemas de punto flotante en js. 0.10+0.20 != 0.30, solución: * 100?

Citar            
MensajeEscrito el 03 Jun 2015 12:33 pm
He buscado mucho en la web acerca del problema, pero creo no haber visto una solución definitiva, en la moneda colombiana y mundial, creo yo, siempre se manejan dos decimales, he hecho algunas pruebas y multiplicar por 100 cada numero y luego dividir el resultado final en 100 me soluciona esas inconsistencias en las pruebas que he realizado, pero, también encontré que este método puede generar inconsistencias en algunos caso.

¿Saben en que caso genera esas inconsistencias?

¿Saben alguna posible solución?

Por Santiag8

18 de clabLevel



Genero:Masculino  

Ing. de Sistemas

chrome
Citar            
MensajeEscrito el 03 Jun 2015 02:50 pm
ES un problema de memoria simplemente utiliza toFixed()

http://www.w3schools.com/jsref/jsref_tofixed.asp

y aqui un ejemplito

Código Javascript :

var suma = 0.10 + 0.20
var corregido = suma.toFixed(2) // el 2 representa la cantidad de decimales

console.log(suma)      // 0.30000000000000004
console.log(corregido) // 0.30

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 03 Jun 2015 02:59 pm
pero si aplico toFixed() en este ejemplo me daria mal la operacion

Código Javascript :

var suma = 12123123.13+12312313234.22;
var corregido = suma.toFixed(2);

console.log(suma)      //12324436357.349998
console.log(corregido) // 12324436357.34


y en realida la suma debe de quedar 12324436357.35

Por Santiag8

18 de clabLevel



Genero:Masculino  

Ing. de Sistemas

chrome
Citar            
MensajeEscrito el 03 Jun 2015 04:49 pm
Nunca dijiste que querias redondear... en fin aqui la solución

http://stackoverflow.com/questions/20701029/rounding-issue-in-math-round-tofixed

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 03 Jun 2015 04:56 pm
pero no, es que no es redondear, si te das cuenta la suma debería ser exacta, no habría necesidad de redondear xxxx.x3 + xxxx.x2 = xxxx.x5 no debe haber necesidad de redondear

Por Santiag8

18 de clabLevel



Genero:Masculino  

Ing. de Sistemas

chrome
Citar            
MensajeEscrito el 03 Jun 2015 05:42 pm
Okay mira, cada navegador tiene un uso diferente de la memoria, los números con punto decimal son procesados diferente por cada uno de ellos. (sin mencionar la combinación con sistemas operativos)

Y bueno el choro de como lo puedes solucionar, aquí :)

http://floating-point-gui.de/basic/

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.