Olá Nilson

Além do ROUND eu andia faço um SUM e acrescento um GROUP BY no final... por
isso não posso fazer dessa forma.

sobre o que o Luigi falou eu já tentei fazer assim usando a mesma
metodologia nas duas consultas.. só que quando o valor muda, segue outro
exemplo, dá tudo errado de novo:

vejam:
liquido = 115.71;
valor_comissao = 0.5;
valor_comissao_receber = 1;
numparc = 7;
numparc_pg = 1;

no PHP
echo
round((($liquido*$valor_comissao*$valor_comissao_receber)/$numparc)*$numparc_pg,2);
vai retornar 8.26

já no SQL
(ROUND((((valor_liquido*valor_comissao*valor_comissao_receber)/numparc)*numparc_pg),2))

vai retornar 8.27

obrigado pessoal

2009/4/8 Nilson Chagas <[email protected]>

> Pq  vc já não faz as contas toda na própria sentença?? Mesmo a detalhada.
>
>
> 2009/4/8 sergio santos <[email protected]>
>
>> 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
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> []s
> Nilson Chagas - Ubuntu User 25794
> ---
> Visite:
> http://www.amados.com.br/podcast -> Peça gratuitamente um curso Bíblico
> http://tempodesalvacao.blogspot.com/
> http://bbnradio.org/ -> Ouça a rádio e faça gratuitamente um Curso Biblico
>
>
>
> _______________________________________________
> 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

Responder a