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
