Jump to content
Fórum Script Brasil
  • 0

[Resolvido] - Arredondar resultado de divisão


dinohills

Question

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 ?

Edited by dinohills
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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.

Edited by dedas
Link to comment
Share on other 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 to comment
Share on other 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.

Edited by dinohills
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...