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

Arredondar Resultados


Mário Miranda

Pergunta

Bom dia pessoal.

Tenho uma aplicação que faz uma conta para se obter o total a ser pago a alguém que é assim:

$valor_total=$valor * $porcentagem / 100;

para $valor = 55.94 e para $porcentagem = 3.

Essa conta daria 1.6782.

PReciso que o resultado seja convertido para 1.67 , tentei usar o round, mas ele arredonda pra mais. Preciso que o valor seja 1.67.

Obrigado e até+

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Você não quer arredondar na verdade... quer apenas corta as casas excedentes, bom você pode usar o number_format, só que ele também vai alterar o número, pois pelo próprio exemplo ele usa regra de arredondamento, para pegar apenas os 2 números após o ponto você pode quebra a variável no ponto e usar substr para pegar apenas as 2 primeiras casas após o ponto e ai juntar tudo de novo...

Link para o comentário
Compartilhar em outros sites

  • 0

O manual já tem um exemplo que se enquadra no que você quer é a "Notação Inglesa com separador de milhar", abaixo o exemplo com o número que você passou:

<?php
$number = 1.6782;

// Notação Inglesa com separador de milhar
$english_format_number = number_format($number, 2, '.', '');

echo $english_format_number;

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Como eu disse no meu primeiro post, o number_format também usa as regras de arredondamento... se você quer o número sem regra nenhuma vai ter que usar o explode para dividir o número no ponto e ai usar o substr para pega apenas as 2 casas iniciais do que tiver depois do ponto... ai você junta tudo usando o implode.

Link para o comentário
Compartilhar em outros sites

  • 0

Até a parte do explode, está tudo ok.

Mas agora, no implode está dando um erro...não consigo juntar os numeros no meu teste.

Olha só o codigo:

<?php

$number1 = 1.6782;

// Notação Inglesa com separador de milhar

$english_format_number = number_format($number, 2, '.', '');

//echo $english_format_number;

$number2=explode(".",$number1);

echo $number2[0];//primeira parte antes do "."

echo"<br>";

$num2=$number2[1];

$num3=substr($num2,0,2);

echo $num3;

$decimal=$number2[1];

//a partir daqui usei o implode mas está dando erro

?>

Para juntar os valores para que fique 1.67 , você pode deixar mais claro o funcionamento do implode?

Link para o comentário
Compartilhar em outros sites

  • 0

O implode junta elementos de um array... logo você tem que substituir o valor o $number2[1] pelo novo valor, pois é ele que vai ser chamado no implode...

<?php
$number1 = 1.6782;

$number2=explode(".",$number1);

$number2[1]=substr($number2[1],0,2);

//a partir daqui usei o implode mas está dando erro
$numero_novo = implode(".", $number2);
echo "Número novo: $numero_novo";
?>

Link para o comentário
Compartilhar em outros sites

  • 0
Não seria mais fácil fazer o seguinte:

$resultado_esperado = floor($valor_a_ajustar * 100) / 100;

???

B)

É que na verdade ele não quer arredondar nada... ele quer pegar apenas as 2 casas decimais a direita do ponto... e floor arredonda pra baixo logo 1.6782 viraria 1 e não 1.67 que é a necessidade dele...

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,3k
    • Posts
      652,6k
×
×
  • Criar Novo...