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 <luigi.carde...@gmail.com>

> 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 <sergio.serginhos...@gmail.com>
>
> 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 <osvaldo.kuss...@gmail.com>
>>
>> Em 08/04/09, Osvaldo Kussama<osvaldo.kuss...@gmail.com> escreveu:
>>> > Em 08/04/09, sergio santos<sergio.serginhos...@gmail.com> 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
>>> pgbr-geral@listas.postgresql.org.br
>>> 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
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> 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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a