JavaScript - Imprecisión al multiplicar números flotantes

 
Vista:
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Imprecisión al multiplicar números flotantes

Publicado por Gio (79 intervenciones) el 05/04/2021 18:18:55
Buenas a todos, le he dedicado demasiado tiempo a este problema para intentar solucionarlo y no hay caso.

El problema es el siguiente, cuando se intenta realizar operaciones aritméticas (sumas, restas, multiplicaciones y divisiones) con valores flotantes (con coma o punto) en JS se devuelven valores imprecisos.

Les pongo un simple ejemplo:
1
var num = 100 * 1.1;
Al ejecutar eso, el valor resultante será 110.00000000000001 cuando el verdadero valor de dicha operación es 110

Otro ejemplo de imprecisión al restar:
1
var num = 1.2 - 1;
Al ejecutar eso, el valor resultante será 0.19999999999999996 cuando el verdadero valor de dicha operación es 0.2

¿Alguien tiene alguna solución para este problema? Desde ya, les agradezco cualquier aporte.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eyednet
Val: 101
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Imprecisión al multiplicar números flotantes

Publicado por Eyednet (3 intervenciones) el 05/04/2021 22:15:03
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha disminuido su posición en 5 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Imprecisión al multiplicar números flotantes

Publicado por Girkov (1 intervención) el 06/04/2021 02:05:06
Para evitar los problemas floating point, hay que mover el punto decimal a la derecha hasta que no hayan fracciónes, realizar tu operación matemática, y luego volver el punto a la izquierda, así:

1
2
3
const num = 1000 * 11 / 100;
console.log(num);
// 110

1
2
3
const num = (12 - 10) / 10;
console.log(num);
// 0.2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Imprecisión al multiplicar números flotantes

Publicado por Gio (79 intervenciones) el 06/04/2021 19:59:26
Esa es una buena opción, gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Imprecisión al multiplicar números flotantes

Publicado por Gio (79 intervenciones) el 06/04/2021 20:13:02
Estoy trabajando en crear una función para poder realizar operaciones aritméticas de forma precisa y segura. Apenas esté lista, la publicaré en este post y en la sección https://www.lawebdelprogramador.com/codigo/

De momento, pueden obtener el código que llevo programado en https://github.com/GioSJ47/JS/blob/master/Librerias/manipularNumeros/aritmeticaFlotante.js actualmente es una versión estable que resuelve multiplicaciones de forma exitosa, faltan por ser programadas las demás operaciones aritméticas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar