Aquí les dejo la solución final.
/** * funcion para convertir un numero a decimal con X digitos * @param String $number * @param Int $digitos cantidad de digitos a mostrar * @return Float */ function truncateFloat($number, $digitos) { $raiz = 10; $multiplicador = pow ($raiz,$digitos); $resultado = ((int)($number * $multiplicador)) / $multiplicador; return number_format($resultado, $digitos); }
EJEMPLO:
truncateFloat('10.138',2); Resultado: 10.13
gracias me ha servido mucho
ResponderEliminarmuchas gracias
ResponderEliminarExcelente muchas gracias
ResponderEliminaraportazo me salvaste
ResponderEliminarExcelente aporte
ResponderEliminarGracias Victor Excelente. Aqui te dejo mi pagina para los que esten trabajando con Jqgrid:
ResponderEliminarhttps://plus.google.com/116785059505984459570/posts
Victor encontre un pequeño detalle en la funcion si le envias truncateFloat(163.48,2,'.','') la funcion retorna 163.47 es decir redondea hacia abajo. Saludos.
ResponderEliminarPor que le pasas tres parametros?!
Eliminargracias... me ayuda mucho!... desde Tehuacán, Puebla... México!.. Saludos
ResponderEliminarmuchas gracias! fue de gran ayuda, Saludos cordiales
ResponderEliminaral final en algunos casos termina redondeando la funcion les comparto la mia para quien le sirva
ResponderEliminarHola una pregunta estoy haciendo un sistema de facturacion , y tengo un resultado por ejemplo 980 y eso lo quisiera redondear a 1000 o 950, tu sabes como lo podría hacer, ya que round solo me funciona si tuviera 980,9 eso lo aproximaria a 981 0 980 segun el caso
EliminarAgradesco tu respuesta.
al final en algunos casos termina redondeando la funcion les comparto la mia para quien le sirva
ResponderEliminarfunction truncado($cantidad, $decimales){
$dividir = explode(".", $cantidad);
if($dividir[1] == 0) {
return number_format($cantidad, $decimales);
}else{
$monto = number_format($dividir[0]);
$decimaltruncado=substr($dividir[1], 0, $decimales);
return $monto.".".$decimaltruncado;
}
}
$mivar = truncado(145999.567899, 6);
Hola una pregunta estoy haciendo un sistema de facturacion , y tengo un resultado por ejemplo 980 y eso lo quisiera redondear a 1000 o 950, tu sabes como lo podría hacer, ya que round solo me funciona si tuviera 980,9 eso lo aproximaria a 981 0 980 segun el caso
ResponderEliminarAgradesco tu respuesta.
El redondeo es solo para valores decimales, no enteros
EliminarGracias funciona perfecto, para variable seria
ResponderEliminar$mivar="10.1380";
truncateFloat($mivar, 2);
Resultado: 10.13
//Imprimir
echo truncateFloat($mivar, 2);
Creo que al tener una nùmero con dos decimales, alli no coge adecuadamente. Ejemplo
ResponderEliminar7.98, sale 7.97
pero si pongo 7.980
sale 7.98
Alguien que me ayude.
es que esta función no redondea, trunca...es decir,corta el numero después de los decimales que le coloques.
Eliminarvaya lio que montais. Simplemente esto:
ResponderEliminar$valor = ((int) ($valor * 100)) / 100
$valor = ((int) ($valor * 100)) / 100 tampoco sirve cuando se manda el valor con 2 decimales...
ResponderEliminarMe ha sido muy útil, gracias eres un capo !
ResponderEliminarGracias me funciono a la perfeccion , Muchas gracias!!
ResponderEliminar