Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/01/2011, 23:05
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al restar decimales PHP

La precision de un numero flotante en PHP es todo, menos precisa

Si el echo del for, lo cambias a:
echo 'index'.$i.': valor - '. number_format($cant, 40) .'<br />';

El resultado es algo como:
Código:
index0: valor - 0.0900000000000000105471187339389871340245
index1: valor - 0.0800000000000000155431223447521915659308
index2: valor - 0.0700000000000000205391259555653959978372
index3: valor - 0.0600000000000000185962356624713720520958
index4: valor - 0.0500000000000000166533453693773481063545
index5: valor - 0.0400000000000000147104550762833241606131
index6: valor - 0.0300000000000000127675647831893002148718
index7: valor - 0.0200000000000000108246744900952762691304
index8: valor - 0.0100000000000000106165076729780594178010
index9: valor - 0.0000000000000000104083408558608425664715
Pero... usando solo dos posiciones decimales:
echo 'index'.$i.': valor - '. number_format($cant, 2) .'<br />';

Código:
index0: valor - 0.09
index1: valor - 0.08
index2: valor - 0.07
index3: valor - 0.06
index4: valor - 0.05
index5: valor - 0.04
index6: valor - 0.03
index7: valor - 0.02
index8: valor - 0.01
index9: valor - 0.00
El resultado sigue siendo el mismo, solo cambia la representacion.

Sera cuestion de hacer pruebas para saber si realmente se tienen 16 posiciones decimales de precision o menos... de acuerdo a esas pruebas, idear una forma de hacer la comparacion eludiendo el resto de digitos.
__________________
- León, Guanajuato
- GV-Foto