tengo un algoritmo que realiza los siguientes cálculos:Sin función Truncar en PHP - ¿Opciones?
- ((0,50 * 0) + 7)/10 = 0,70
- ((0,70 * 10) + 9)/20 = 0,80
- ((0,80 * 20) + 7)/30 = 0,7666666667 -> Quiero este valor para truncar a 0,76
Así que puede alimentar al resto del cálculo como:
4a. ((0,76 * 30) + 8)/40 = 0,77
Y no para alimentar en cuando redondeado dos decimales como 0,77:
4b. ((0,77 * 30) + 8)/40 = 0,77
**** La siguiente parecen haber fallado y en lugar de forzar una ronda hasta 0,77: ****
El PHP sptrinf () función: PHP dropping decimals without rounding up
El number_format PHP() función: PHP: show a number to 2 decimal places
El suelo PHP() función: Truncate float numbers with PHP
- ¿Hay alguna otra manera?
- ¿Es posible lograr lo que quiero (truncar a dos lugares decimales) con PHP?
Asistencia. Muchas gracias.
ACTUALIZADO - SOLUCIONADO Ok, está trabajando ahora gracias a dkamins y zneak. Utilicé el método floor() (supongo que no estaba haciendo algo bien en el pasado). Sin embargo, ahora sucede lo siguiente:
p.
(0,86 * 30) + 9)/40 = 0,87 (debería), sin embargo, después TRUNCAR it = 0,86
¿Cómo se truncar 0,87 a 0,86? No tiene sentido. ¿Hay alguna manera de hacer que trunque solo si hay más de dos decimales?
resuelto:
$numDecPlace = strlen(substr(strrchr($newRel, "."), 1));
echo '<p>Test: Number of decimal places=' .$numDecPlace. '</p>';
if($numDecPlace > 2) {
$newRel = floor($newRel * 100)/100; // Truncate to 2dp.
echo '<p>Test: New relationship truncated is $newRel=' .$newRel. '</p>';
}
Resolvió mi actualización. – leokennedy
Debería consultar @Fernando Prieto [su respuesta a continuación] (http://stackoverflow.com/a/19124167/1890400). Utiliza un enfoque basado en (sub) cadenas que es similar a la primera parte de la solución elegida, pero personalmente creo que podría ser más eficiente y más robusto. – Byson