Ir para conteúdo
Fórum Script Brasil
  • 0

[Resolvido] - Arredondar resultado de divisão


dinohills

Pergunta

Bom dia,

Estou montando um relatório em PHP que vai ser exportado pra PDF e nesse relatório eu sei que cabem 33 itens por folha.

E no cabeçalho do relatório eu coloco o número total de páginas que o PDF tem. Até ai tudo beleza !

O grande problema é quando minha divisão para achar o número de folhas termina em .0303030303 .

Estou usando ceil() para arredontar o resultado para cima.

Mas o que eu gostaria de fazer era quando o resultado da conta terminar em .0303030303 eu teria o resultado arredondado para baixo.

Só que eu não sei como fazer isso.

Alguém pode dar uma ajuda ?

Alguns exemplos

34 / 33 = 1.03030303

67 / 33 = 2.03030303

100 / 33 = 3.03030303

......

e por ai vai

nesses casos gostaria de arredontar o valor para baixo e não para cima como o ceil() faz.

Alguma idéia ?

Editado por dinohills
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Bom eu não sei se seria a melhor maneira, mas fiz uma função pra fazer isso pra mim.

Fiz alguns testes e acho que ta beleza.

function arredonda_div($numero){
           $resultado = round($numero/33,10);
           $explode = explode(".", $resultado);
           if($explode[1] == '0303030303'){
               return round($resultado);
           }else{
               return ceil($resultado);
           }
       }

Se alguém tiver ou idéia compartilha ai.

Link para o comentário
Compartilhar em outros sites

  • 0

Deixa ela assim:

function arredonda_div($numero){
   $resultado = round($numero/33,12);
   $explode = explode(".", $resultado);
   
   if($explode[1] == '030303030303'){
       return floor($resultado);
   }else{
       return ceil($resultado);
   }
}

#Resultado: 1
echo arredonda_div(34);

Lembrando que o resto das divisões que você colocou aqui não é 03030303, é na verdade 030303030303. Então, tomei a liberdade de alterar o valor na função.

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0
Agora a questão é:

Essa seria a melhor forma de se fazer ?

Se a função está fazendo o que você precisa, essa é a melhor forma para você :) Agora o problema que eu encontrei foi a seguinte situação: E se o número total de páginas for 75 ? O resto da divisão 75/33 é igual à 2727272727273, então, usando a lógica da sua função, o valor retornado por ela seria 3. Sendo que o valor correto seria 2. Resumindo, minha pergunta é: Qual a lógica da sua função ? Porque você quer arredondar pra baixo apenas os valores de resto 030303030303 e os outros valores você quer arredondar pra cima ?

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que você não entendeu o que eu to fazendo ou eu que não expliquei direito.

Mas é assim

Eu sei que por folha cabem 33 itens certo ?

Então se eu tenho 66 itens eu terei 2 folhas. Correto ?

O que estava acontecendo é que quando eu tinha 33 itens e mandava gerar o pdf, ele gerava uma folha a mais.

Ai eu fui fazendo as contas até chegar na conclusão de que quando o resultado da divisão terminava em 0303030303 o pdf criava uma página a mais não consegui achar ou entender o motivo.

Foi isso que aconteceu.

Mas eu to fazendo bastante teste e cada vez aumentando o número de itens no relatório pra ver se vai ficar tudo bem. E até agora tá funcionando como esperado.

Agora o fato deu querer saber se teria uma outra forma de fazer, é porque mesmo funcionando eu gosto de saber se tem alguma outra alternativa. Que talvez seja melhor ou pior.

Mas resumindo está funcionando como eu quero até o momento.

Editado por dinohills
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...