Ir para conteúdo

POWERED BY:

Arquivado

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

tupinikin

[Resolvido] Arredondar valores, sem usar ceil e floor ou round

Recommended Posts

Ola pessoal

 

tenho um problema, preciso arredondar um valor assim

 

R$12,09

arrendondar p/ baixo

R$12,00

se for maior ou igual a R$12,10

arredondar p/ cima

R$13,00

 

o ceil

echo ceil(-6.12); // O resultado será arredondado para -6

echo floor(-6.12); // O resultado será arredondado para -7

echo round(-6.12); // O resultado será arredondado para -6

 

 

Eu pensei em "explodir" a virgula, e pegar os números depois da virgula

e fazer a comparação

 

mas queria saber se tem algum método mais pratico

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não teria problema de usar as funções do php

 

O problema é mais na lógica que nos comandos

 

Como pegar a casa decimal após a virgula e arredondar p/ cima ou p/ baixo

mas seguindo o patamar de 0 a 9 para menos

de 10 a 99 p/ cima

 

Eu pensei assim

 

pegar o valor depois da virgula

 

se fosse 10 ou maior fazer ele virar 100 (ou 1)

 

mas acontece que minha lógica não deu certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

 <?php
echo round(3.4);     	// 3
echo round(3.5);     	// 4
echo round(3.6);     	// 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06
?>   	

 

entao use o round com o segundo parametro...

 

http://br.php.net/manual/en/function.round.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$v = 10.02;

echo $v - (int) $v < 0.1 ? floor( $v ) : ceil( $v );

 

EDIT:

 

Uma versão mais simples:

 

$v = 10.10;

echo floor( $v + ( $v - (int) $v > 0.09 ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma versão, agora mais rápida e não usa nenhuma função:

 

<?php
$v = 10.10;

echo (int) $v + ( $v - (int) $v > 0.09 );

 

:P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa, muito obrigado mesmo

 

deu certinho aqui

 

finalizei assim

 

echo number_format($tudo, 2, ',', '.');

 

onde tudo é a variável que armazena as informações do script do João

 

Então eu pego e transformo com o number_format

 

e voilá, deu certo.

 

 

Tópico resolvido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa sacada foi 10* XD

 

Mais uma versão, agora mais rápida e não usa nenhuma função:

 

<?php
$v = 10.10;

echo (int) $v + ( $v - (int) $v > 0.09 );

 

:P

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.