Foros del Web » Programando para Internet » PHP »

como hacer para que solo tengo 2 decimales y no 10

Estas en el tema de como hacer para que solo tengo 2 decimales y no 10 en el foro de PHP en Foros del Web. tengo esta consulta que passo en un array, y luego cuando lo saco en la plantilla .tpl me sale con muchos decimales y me gustaria ...
  #1 (permalink)  
Antiguo 10/11/2008, 03:43
 
Fecha de Ingreso: abril-2008
Mensajes: 144
Antigüedad: 16 años, 7 meses
Puntos: 1
Pregunta como hacer para que solo tengo 2 decimales y no 10

tengo esta consulta que passo en un array, y luego cuando lo saco en la plantilla .tpl me sale con muchos decimales y me gustaria que solo saliera con 2... como lo habo? he mirado lo de .number_format pero no se donde ponerlo pk luego me salen errores ..a ver quien me ayuda... :P

Código PHP:
$sql " SELECT p.testdate, count( p.herd_id ), avg( p.milk ) , avg( p.fat ) , avg( p.scc ) , avg( p.prot ) 
         FROM production p
         WHERE p.TESTDATE >= '2008-03-02'
         GROUP BY p.testdate    
         order by $ordenar    
         LIMIT 0, 15"
;
         echo 
$sql.'<br>'.$a.','.$b.'<br>';
         
        
    
    
            
$consultsql=new Consulta;
                
$result=$consultsql->executar($sql);
                        
            
//$resultats = number_format($numero, 2, ',', ' ');
            
$resultats=array();
            while(
$row=mysql_fetch_array($result))     // Extreu la fila resultant com una matriu associativa (clau,valor)
            
                   
{
                
$resultats[]=array('data'=>$row["testdate"],'numvaques'=>$row["count( p.herd_id )"],'llet'=>$row["avg( p.milk )"].number_format($value2),'grasa'=>$row["avg( p.fat )"],'celules'=>$row["avg( p.scc )"],'proteines'=>$row["avg( p.prot ) "]);      
                                
//omplim l'array amb els resultats.
                
}
            
            
// print_r($resultats);    
            
mysql_free_result($result);  //Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo.
                                      // Mysql_free_result() es fa servir per lliberar memoria feta servir a les consultes, i es                                                    necessari depenent del nº de consultes "visites" que i fem.
       
$smarty->assign('resultatstpl'$resultats);      //PASSEM ELS RESULTATS DE LA CONSULTA CAP AL TPL 
$resultats[] este array es el que passo al tpl. y quiero que salga con los datos solo con 2 decimales ,

muchas gracias :P
  #2 (permalink)  
Antiguo 10/11/2008, 04:49
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: como hacer para que solo tengo 2 decimales y no 10

Deberías aplicar el formato dentro del while para cada elemento de $row que quieras tratar, y antes de hacer la asignación a $resultats[]. Y si son varios valores consecutivos que tienes bien identificados, puedes hacer el formato de una pasada, usando un bucle ('for').

Por ejemplo, con este código:

Código PHP:
<?php echo "<pre>";

    
$coso = array( array(1,2,3,4,5,6), array(3,4,5,6,7,8) );
    
    foreach ( 
$coso as $id => $row ) {
        
        for(
$i=3$i<6$i++) $row[$i] = number_format($row[$i], 2);
        
$otrocoso[] = $row;
    }

    
print_r$otrocoso );

echo 
"</pre>"?>
Obtengo $otrocoso, que es una copia del array $coso pero dando formato con decimales a algunos de los elementos (en este caso los tres últimos) de cada "sub-array" que contiene:

Código:
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4.00
            [4] => 5.00
            [5] => 6.00
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
            [2] => 5
            [3] => 6.00
            [4] => 7.00
            [5] => 8.00
        )

)
Aplicar esa idea al código que tienes es apenas una línea.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.