operación matematica en php. INCREIBLE!!

Iniciado por OssoH, 15 Septiembre 2015, 18:15 PM

0 Miembros y 1 Visitante están viendo este tema.

OssoH

tengo la ultima version de xampp que lleva la ultima versión de PHP
mi codigo es


$a=14;
$b = 13.97;
$op = $a-$b;
echo 'RESULTADO'.$op;


¿Porque el resultado es 0.029999999999999  cuando debería ser 0.03?

Gracias

engel lex

por asuntos de precisión a nivel binario...


si haces en c++ la misma operación
Código (cpp) [Seleccionar]
#include<iostream>

using namespace std;
int main()
{
    int a = 14;
    float b = 13.97;
    float op = a-b;

    cout<<op<<endl;

    return 0;
}


te dará un resultado similar
0.0299997
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

OssoH

Entonces la idea es siempre redondear en cualquier operación matemática para que no te pasen estas cosas porque en la calculadora de "andar por casa" no sucede.
Gracias por la explicación

engel lex

si, formatéa el resultado de los tipo flotante para evitar esos detalles...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DarK_FirefoX

Como bien te dicen, tiene que ver con que las computadoras utilizan la aritmética del punto flotante, una aritmética que utiliza una cantidad de dígitos de precisión, una mantiza y un exponente para representar los números en la aritmética de la computadora.

De acuerdo al tipo de redondeo que se utilice (dígase por truncamiento o al numero flotante más cercano) se pierde precisión en los cálculos.

Mi recomendación que te leas este artículo:

What every computer scientist should know about floating-point arithmetic (Todo lo que un científico de la computación debe saber acerca de la aritmética de punto flotante)

Salu2s

OssoH