Pq vc já não faz as contas toda na própria sentença?? Mesmo a detalhada.
2009/4/8 sergio santos <sergio.serginhos...@gmail.com> > 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 > > -- []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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral