Eu utilizo funções:
Tente:
//arredondado (8.56,2);
function arredondar_dois_decimal($valor) {
$float_arredondar=round($valor * 100) / 100;
return $float_arredondado;
}
//Funcao
function arredondado ($numero, $decimais) {
$fator = pow(10, $decimais);
return (round($numero*$fator)/$fator);
}
Atts,
Paulo.
VisualP Sistemas.
----- Original Message -----
From: sergio santos
To: Comunidade PostgreSQL Brasileira
Sent: Wednesday, April 08, 2009 3:47 PM
Subject: Re: [pgbr-geral] Arredondamento pg <> do PHP
Entendi...
mais o meu problema continua
rs
eu tenho dois relatórios que buscam os mesmos valores no banco de dados...
só que um é todo detalhado, por isso prociso fazer as contas em PHP, já o
outro é todo sumarizado e então eu faço as contas na própria SQL.
logo eu tenho os seguintes valores no banco de dados:
liquido = 167.69;
valor_comissao = 0.5;
valor_comissao_receber = 1;
numparc = 10;
numparc_pg = 1;
em PHP eu faço as contas assim:
$a = round($liquido*$valor_comissao,2);
$b = round($a*$valor_comissao_receber,2);
$c = round($b/$numparc,2);
$d = round($c*$numparc_pg,2);
echo round($d,2);
vai retornar 8.39
no SQL eu faço as contas assim:
SELECT
(ROUND((((valor_liquido*valor_comissao*valor_comissao_receber)/numparc)*numparc_pg),2))
FROM ...
vai retornar 8.38
já tentei fazer um monte de coisas e tudo tá dando errado...
alguém tem alguma idéia pra poder me ajudar.
abraços
2009/4/8 Luigi Castro Cardeles <[email protected]>
Sim e não :)
Se você está trabalhando com matemática de ponto flutuante esse é um
resultado possível.
Arredondando somente no fim:
2,34 * 8,67 = 20,2878 ~ 20,29
se você arredondar individualmente:
2,34 ~ 2,3
8,67 ~ 8,7
2,3 * 8,7 = 20,01
[]'s
Luigi Castro Cardeles
2009/4/8 sergio santos <[email protected]>
Pessoal
vejam bem
essas são minhas variáveis:
$liquido = 115.71;
$valor_comissao = 0.5;
$valor_comissao_receber = 1;
$numparc = 7;
$numparc_pg = 1;
Quando eu faço assim:
round((($liquido*$valor_comissao*$valor_comissao_receber)/$numparc)*$numparc_pg,2);
o resultaod é 8.26 ou seja, diferente do arredondamento no PostgreSQL
já quando eu faço passo a passo, ele me retorna o mesmo valor que o
PostgreSQL está retornando
$a = round($liquido*$valor_comissao,2);
$b = round($a*$valor_comissao_receber,2);
$c = round($b/$numparc,2);
$d = round($c*$numparc_pg,2);
echo round($d,2);
estranho....
2009/4/8 Osvaldo Kussama <[email protected]>
Em 08/04/09, Osvaldo Kussama<[email protected]> escreveu:
> Em 08/04/09, sergio santos<[email protected]> escreveu:
>> Pessoal o arredondamento od PosgreSQL funciona assim:
>> 8.265 = 2.27
>>
>> e o do PHP é assim:
>> 8.265 = 2.26
>>
>> tem uma forma de eu forçar o PosgreSQL a arredondar igual ao PHP?
>>
>
>
> Em primeiro lugar eu duvido que tanto o PostgreSQL quanto o PHP façam
> o arredondamento acima descrito.
> Agora se você estiver falando de 8.265 = 8.26, bem isto é o que se
> espera, matematicamente falando.
Ooops!
Queria dizer na frase acima:
8.265 = 8.27
>
> Creio que o PHP também não faz da forma como você descreveu, veja o
> manua (particularmente os 2 últimos exemplos)l:
> <?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
> ?>
> http://br.php.net/round
>
> Mas você sempre pode criar sua própria função de arredondamento.
>
> Osvaldo
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
--
Sérgio Antônio dos Santos
Bacharel em Sistemas de Informação
(31) 8573-7004
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
--
Sérgio Antônio dos Santos
Bacharel em Sistemas de Informação
(31) 8573-7004
------------------------------------------------------------------------------
E-mail verificado pelo Terra Anti-Spam.
Para classificar esta mensagem como spam ou não spam, clique aqui.
Verifique periodicamente a pasta Spam para garantir que apenas mensagens
indesejadas sejam classificadas como Spam.
------------------------------------------------------------------------------
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
------------------------------------------------------------------------------
Nenhum vírus encontrado nessa mensagem recebida.
Verificado por AVG - www.avgbrasil.com.br
Versão: 8.5.285 / Banco de dados de vírus: 270.11.47/2047 - Data de
Lançamento: 04/08/09 05:53:00
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral