Jump to content
Sign in to follow this  
Nightmare SEP

Arredondar com multiplo

Recommended Posts

Boa tarde,

 

Eu dei uma pesquisada mas não encontrei nada a respeito ainda.

 

Eu preciso fazer um arredondamento mas com múltiplos de 50.

 

Ex:

1020 arredondar para 1050

403 arredondar para 450

784 arredondar para 800

 

Tem alguma função que faça isso?

 

Obrigado!

Share this post


Link to post
Share on other sites

Boa noite @Bruno, realmente não tem nenhuma função nativa do PHP que faça isso, mas você pode utilizar isso:

/* Created By Goodeath */
function round_fifty($numero){
  if($numero< 50){
    exit("Número menor que 50");
  }
  $rest = ceil($numero/50);
  $result = $rest*50;
  return $result;
}

Testes:

echo round_fifty(1020)
// 1050
echo round_fifty(403)
// 450
echo round_fifty(784)
//800

Caso queira para um múltiplo menor, utilizar floor em vez de ceil.

 

Por favor marcar o tópico como resolvido, e retribua com um +rep :P .

 

Código criado por mim, e, disponibilizado para uso público.

  • +1 1

Share this post


Link to post
Share on other sites
<?php
$numero = 1020;
echo 50 * round( $numero / 50, 0 );

;)

 

Edit: Apenas uma observação... Posso estar enganado, mas creio que seus exemplos estejam incorretos.

 

1020 está mais próximo de 1000 do que de 1050.

403 iria para 400 e não para 450... E por aí vai.

 

O código acima faz exatamente isso... Abraços!

Edited by Matheus Tavares

Share this post


Link to post
Share on other sites
<?php
$numero = 1020;
echo 50 * round( $numero / 50, 0 );

;)

 

 

Round pode arrendondar para baixo, caso a fração seja menor que {número}.5 ; No caso ele quer que arrendonde só para cima.

 

Edit: Bem, Estão os dois exemplos. Algum vai servir.

Edited by goodeathx

Share this post


Link to post
Share on other sites

 

Round pode arrendondar para baixo, caso a fração seja menor que {número}.5 ; No caso ele quer que arrendonde só para cima.

 

Obrigado pela observação, mas nesse caso basta trocar o round pelo ceil ou floor, como desejado (pra cima ou pra baixo).

 

O fato é que se é pra "arredondar" para aproximar o valor do múltiplo de 50, que foi o que foi descrito no post, o mais correto seria o round mesmo... Mas pelos exemplos, ficou meio confuso.

 

Abraços =)

Share this post


Link to post
Share on other sites

goodeathx,

Obrigado, já vou testar, e aviso aqui se deu certo no que eu preciso fazer.

 

Matheus Tavares,

A sua lógica está correta, mas é assim mesmo que preciso, preciso que arredonde pra cima.

 

Obrigado pessoal.

Share this post


Link to post
Share on other sites

Se ler novamente o que o @Matheus Tavares explicou, poderá ver sobre ceil e floor. Que, no caso, ceil faz exatamente o que você necessita.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By edivancastro
      Pessoal veja o seguinte cenario:
       
      Arroz:   71.428571428571%
      Feijão: 14.285714285714%
      Carne:  14.285714285714%
      TOTAL: 99,99999999%

      Preciso fazer arredondamento para no maximo duas casas apos a virgula, pois há situações em que as casas decimais são infinitas ou muito grande para serem exibidas ao usuario, entao aplico a função round do php.
      <?php $novovalor = round($valor, 2); ?> Apos a aplicação desta formula tenho:
      Arroz: 71,43
      Feijão: 14,29
      Carne: 14,29
      TOTAL: 100,01
       
      Enfim, esta tabela com os valores percentuais arredonados acima serão exibidos para o usuario, porém inadequado, pois extrapola os 100%. Gostaria de saber como faço esse arredondamento para que posteriormente a soma nao seja inferior e nem superior a 100%.
       
      Como faço isso?
       
      OBS: NAO POSSO APLICAR ROUND EM TOTAL POIS SERÁ PERCEPTIVEL AO USUARIO O ERRO DA SOMA
    • By bruno de assis agues
      Olá meus caros!
       
      Muito bem, após cansar de pesquisar alguma função que resolvesse este meu problema, resolvi correr para os braços de vocês. 
      Estou tentando arredondar o resultado de uma divisão da seguinte forma: 
      resultado = 2.121
      resultado arredondado = 2.13
      Sempre que o valor for maior do que 0 a partir da terceira casa decimal arredonde para cima. 
       
      Desde já, lhes agradeço. 
    • By maurohpg
      Bom dia pessoal, estou fazendo um upload múltiplo de imagens, mais estou com um pequeno problema, estou testando e não
      está sendo feito o upload, e não me mostra mensagem de erro algum, revisei o código ja várias vezes e não consigo encontrar
      um erro. Por acaso alguém tem ideia do que pode estar ocorrendo?
      <? include("../config.php"); include("verifica.php"); if($acao ==''){ echo '<form action="album_add.php?acao=add&id='.$id.'" method="post" enctype="multipart/form-data" name="form1"> <p align="center">Imagem<br> <input type="file" name="foto[]" multiple/> </p> <p align="center">Pequena descri&ccedil;&atilde;o<br> <input name="desc_" type="text" size="60" maxlength="250"> </p> <p align="center"> <input type="submit" name="Submit" value="Enviar"> </p> </form>'; }// FECHA principal ?> <?php if(isset($_POST['enviar']) == 'sim'){ $i = 0; foreach($_FILES['foto'] as $k=>$v) { if(!empty($_POST['desc_'][$i]) && !empty($_FILES['foto']['name'])) { // Largura máxima em pixels $largura = 640; // Altura máxima em pixels $altura = 480; // Tamanho máximo do arquivo em bytes $tamanho = 10000; // Verifica se o arquivo é uma imagem $tipos_permitidos = array('pjpeg'=>'image/pjpeg', 'jpeg'=>'image/jpeg', 'jpg'=>'image/jpg', 'gif'=>'image/gif', 'bmp'=>'image/bmp', 'png'=>'image/png' ); foreach($tipos_permitidos as $k=>$v) { if($_FILES['foto']['type'][$i] == $v) { $ext[1] = $k; break; } } if(!isset($ext)) { $error[1] = 'Extensão do arquivo não permitida: ' .$_FILES['foto']['type'][$i]; } // Pega as dimensões da imagem $dimensoes = getimagesize($_FILES['foto']['tmp_name'][$i]); // Verifica se a largura da imagem é maior que a largura permitida if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } // Verifica se a altura da imagem é maior que a altura permitida if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } // Verifica se o tamanho da imagem é maior que o tamanho permitido if($_FILES['foto']['size'][$i] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes"; } if (!isset($error)) { // Gera um nome único para a imagem $nome_imagem = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde ficará a imagem $caminho_imagem = "../uploads/album/" . $nome_imagem; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($_FILES['foto']["tmp_name"][$i], $caminho_imagem); include("resizer_foto_album.php"); $sql = mysql_query("INSERT INTO fotos (id_imovel, foto, obs_foto) VALUES ('$id', '$imagem_nome', '$desc_')") or print(mysql_error()); } else { echo 'Erro(s) encontrado(s)<br>'; foreach($error as $ek=>$ev) { echo $ev. '<br>'; } } } $i++; } } ?>  
    • By Mozelli
      Olá pessoal.
      Estou querendo criar um campo de preço em uma tabela e defini o tipo como Decimal(6,2), porém quando salvo a alteração o mysql muda o formato do número para (6,0). Quando insiro um valor, por exemplo 6.93, o mysql muda para 7.
      Como resolver isso?
      Desde já, obrigado!
    • By Asriel
      Olá, este é meu código, ele faz um upload múltiplo de imagens porem, ele faz o move upload de apenas 2 arquivos, e cadastra os mesmo retidas vezes no banco, alguém poderia me dar uma solução para o upload continuar de mover cada uma das imagens.
      Código:
      for ($i = 0; $i < count($arquivo['name']); $i++) { $dirf = $dir . md5(time($arquivo['name'][$i])) . '.png'; if (move_uploaded_file($arquivo['tmp_name'][$i], $dirf)) { $sqli3 = "insert into imagem(codimagem, caminho, codevento) values (null, '$dirf', '$cod')"; $res2 = mysqli_query($conexao, $sqli3) or die(mysqli_error()); echo "<script>alert('Evento Cadastrado com sucesso!');</script>"; } else { echo "<script>alert('Erro ao Cadastrar!');</script>"; } } }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.