Tema: Resta en PHP
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/09/2018, 18:18
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Resta en PHP

Cita:
Iniciado por hmv Ver Mensaje
Código PHP:
//Si restamos :

$valor1 160.70;
$valor2 160.60;

echo 
$valor1 $valor2;

//Lo logico es que me de: 0.10, pero en realidad me da 0.099999999999994, y no entiendo pq, alguna duda??
No vale redondearya que en la calculadora normal/cientifica sale 0.10 
Esto es perfectamente normal, debes de saber que el almacenamiento interno de cantidades fraccionarias es aproximada así que en operaciones de punto flotante lo que te regresa el lenguaje es lo mas aproximado a tu resultado.
Es decir que tienes una perdida, por lo cual te guste o no tienes que redondear la cantidad para obtener el resultado esperado.

Soluciones existen varias dependiendo de lo que necesites
Código PHP:
Ver original
  1. $valor1 = 160.70;
  2. $valor2 = 160.60;
  3.  
  4.  
  5. echo $valor1 - $valor2 . '<br>';
  6.  
  7. //Soluciones
  8. echo round($valor1 - $valor2, 2) . '<br>';
  9.  
  10. echo number_format($valor1 - $valor2, 2) . '<br>';
  11.  
  12. echo bcsub($valor1, $valor2, 2);
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.