Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

joaozonta

Arredondar valor 0.444444 para 0.45

Recommended Posts

Estou com um problema que não consigo resolver.

Eu tenho um valor 0.444444 e preciso de uma função que arredonde para 0.45

Já tentei roud anda ceil:
$value = 0.444444;
echo round($value, 2);  // 0.44
echo ceil($value);  // 1

Alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão:

<?php
bcscale( 20 );// Precisão nas operações matemáticas

function arredondar_pra_cima( $numero ) {
    return bcdiv( ceil( bcmul( $numero, 100 ) ), 100 );
}

$exibir = function( $num ) {
    printf( "%-09s: %.2f\n", $num, arredondar_pra_cima( $num ) );
};

$exibir( 0.444444 );
$exibir( 3.25 );
$exibir( 3.2555555 );
$exibir( 3.2444444 );
$exibir( 3.2011111 );
$exibir( 3.2111111 );

 

Resultado:

0.4444440: 0.45
3.2500000: 3.25
3.2555555: 3.26
3.2444444: 3.25
3.2011111: 3.21
3.2111111: 3.22

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Matheus Tavares não sei se meu PHP está configurado diferente, mas aqui o number_format(); está arredondando para cima

 

$valor = '157.75';
$divide_em = '2';
$divide_valor = $valor/$divide_em; //resultado= 78.875

$divide_valor2 = number_format($divide_valor,2);  
echo $divide_valor2."<br>";

//resultado= 78.88

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @11closed. Tudo bem?

Você está utilizando um número com decimal superior a 5, levando o arredondamento naturalmente para cima.

 

Se pegarmos o exemplo do título deste tópico, veremos que o number_format não arredonda como o autor do tópico havia pedido. Faça o teste:

echo number_format( 0.444444, 2 );// 0.44 e não 0.45

Sacou?

 

Veja também:

https://secure.php.net/manual/pt_BR/function.round.php

https://secure.php.net/manual/pt_BR/function.ceil.php

https://secure.php.net/manual/pt_BR/function.floor.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.