Tags Palabras claves

Error de javascript

28/12/2005 - 12:57 por Daniel Fernández | Informe spam
Hola, existe un problema con Explorer 6.0 (varias versiones). Cuando
ejecuto el codigo de abajo, resta mal los float. Debe ser un problema de
implementacion de javascript.

Codigo:
<html>
<head>
<script>
function resta() {
var pp = 4.1;
var p = 0.1;

while (pp > 0) {
document.write("<br>" + pp);
pp = pp-p;
}
}
</script>
</head>
<body onload="resta()">
</body>
</html>

Segmentation Fault
 

Leer las respuestas

#1 Ramón Sola [MVP Windows - Shell/User]
29/12/2005 - 18:25 | Informe spam
Hash: SHA1

Yo no lo calificaría como un error de implementación de Javascript. He
elaborado un pequeño programa en C equivalente y los resultados son
similares.

#include <stdio.h>

int main(void)
{
double pp = 4.1, p = 0.1;

while (pp > 0) {
printf("%.20lf", pp);
pp = pp - p;
}
}

Esto se debe a la dificultad para representar con exactitud algunos números
decimales en binario, de la misma forma que nosotros perdemos cierta
precisión al intentar representar la fracción 1/3 en base 10
(0.3333333333...).


Más información:

PRB: Multiplication Errors in JScript
http://support.microsoft.com/kb/244699

Aunque el artículo se centre en pérdidas de precisión al multiplicar, los
fundamentos se pueden aplicar a cualquier operación sobre números de punto
flotante.

Ramón Sola / / MVP Windows - Shell/User
Para obtener la dirección correcta no hacen falta los sellos.
Por favor, usar el correo sólo para cuestiones ajenas a los
grupos de noticias, gracias.

Cuentan que "Daniel Fernández"
escribió en el mensaje
news: lo siguiente:
Hola, existe un problema con Explorer 6.0 (varias versiones). Cuando
ejecuto el codigo de abajo, resta mal los float. Debe ser un problema de
implementacion de javascript.

Codigo:
<html>
<head>
<script>
function resta() {
var pp = 4.1;
var p = 0.1;

while (pp > 0) {
document.write("<br>" + pp);
pp = pp-p;
}
}
</script>
</head>
<body onload="resta()">
</body>
</html>

Segmentation Fault

Preguntas similares