Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: OssoH en 15 Septiembre 2015, 18:15 pm



Título: operación matematica en php. INCREIBLE!!
Publicado por: OssoH en 15 Septiembre 2015, 18:15 pm
tengo la ultima version de xampp que lleva la ultima versión de PHP
mi codigo es

Código:
		$a=14;
$b = 13.97;
$op = $a-$b;
echo 'RESULTADO'.$op;

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

Gracias


Título: Re: operación matematica en php. INCREIBLE!!
Publicado por: engel lex en 15 Septiembre 2015, 18:20 pm
por asuntos de precisión a nivel binario...


si haces en c++ la misma operación
Código
  1. #include<iostream>
  2.  
  3. using namespace std;
  4. int main()
  5. {
  6.    int a = 14;
  7.    float b = 13.97;
  8.    float op = a-b;
  9.  
  10.    cout<<op<<endl;
  11.  
  12.    return 0;
  13. }
  14.  

te dará un resultado similar
Código:
0.0299997


Título: Re: operación matematica en php. INCREIBLE!!
Publicado por: OssoH en 15 Septiembre 2015, 19:13 pm
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


Título: Re: operación matematica en php. INCREIBLE!!
Publicado por: engel lex en 15 Septiembre 2015, 19:16 pm
si, formatéa el resultado de los tipo flotante para evitar esos detalles...


Título: Re: operación matematica en php. INCREIBLE!!
Publicado por: DarK_FirefoX en 15 Septiembre 2015, 19:45 pm
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) (http://www.validlab.com/goldberg/paper.pdf)

Salu2s


Título: Re: operación matematica en php. INCREIBLE!!
Publicado por: OssoH en 16 Septiembre 2015, 09:13 am
Muchas gracias por la aclaración.  ;-) ;-) ;-)