Re: [pgbr-geral] Arredondamento pg do PHP
Sergio, Duas situações distintas. Arredondamento e truncar, no PG está arredondado, já no PHP está truncando. Arredondar é aumentar ou diminuir o valor, dada a sua necessidade ou definido pelo programa. Truncar é cortar/retirar o número x de casas que não se deseja (ou cortar/retirar até a parte desejada). É indicado vc fazer o tratamento através de programação (aka PHP) e depois executar o procedimento. Abraços. 2009/4/8 sergio santos sergio.serginhos...@gmail.com: 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? abraços -- 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 -- Armando Roque http://www.linkedin.com/in/armandoroque http://dropsdef.blogspot.com http://del.icio.us/dropsdef ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Arredondamento pg do PHP
Em 08/04/09, sergio santossergio.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. 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
Re: [pgbr-geral] Arredondamento pg do PHP
Em 08/04/09, Osvaldo Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
Re: [pgbr-geral] Arredondamento pg do PHP
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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
Re: [pgbr-geral] Arredondamento pg do PHP
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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
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 (ROUNDvalor_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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
Re: [pgbr-geral] Arredondamento pg do PHP
Olá, Você tem que seguir a mesma metodologia em ambos: Ou você arrendonda o resultado final (como você fez no banco) ou você arredonda por partes (como você fez no PHP). O ideal é que você somente arredonde no fim de modo a diminuir o erro em seus cálculos. Luigi Castro Cardeles 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 (ROUNDvalor_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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Arredondamento pg do PHP
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 (ROUNDvalor_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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
Re: [pgbr-geral] Arredondamento pg do PHP
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 (ROUNDvalor_liquido*valor_comissao*valor_comissao_receber)/numparc)*numparc_pg),2)) vai retornar 8.27 obrigado pessoal 2009/4/8 Nilson Chagas nilson.chagas.si...@gmail.com 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 (ROUNDvalor_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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
Re: [pgbr-geral] Arredondamento pg do PHP
sergio santos escreveu: (...) 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 r...@desenvolvimento:~# cat php.php ?php $liquido = 115.71; $valor_comissao = 0.5; $valor_comissao_receber = 1; $numparc = 7; $numparc_pg = 1; echo round((($liquido*$valor_comissao*$valor_comissao_receber)/$numparc)*$numparc_pg,2); echo \n\n; ? r...@desenvolvimento:~# php php.php 8.27 r...@desenvolvimento:~# php -v PHP 4.4.9 (cli) (built: Oct 30 2008 19:02:23) -- []´s, André Volpato ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Arredondamento pg do PHP
Não tem como vc postar sua sentença sql detalhada?? Ainda não vi problema, SUM E GROUP BY?? Não vejo problema mesmo. 2009/4/8 sergio santos sergio.serginhos...@gmail.com 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 (ROUNDvalor_liquido*valor_comissao*valor_comissao_receber)/numparc)*numparc_pg),2)) vai retornar 8.27 obrigado pessoal 2009/4/8 Nilson Chagas nilson.chagas.si...@gmail.com 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 (ROUNDvalor_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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
Re: [pgbr-geral] Arredondamento pg do PHP
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 (ROUNDvalor_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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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
Re: [pgbr-geral] Arredondamento pg do PHP
Ola pessoal usei a ideia do Paulo e fiz uma adaptação. Na verdade eu modifiquei a função dele para fazer um truncation com a função ceil do PHP fiz a mesma coisa no SQL e PIMBA funcionu vejam a função: function arredondar_dois_decimal($valor) { $float_arredondar=ceil($valor*100)/100; return $float_arredondar; } já no SQL fiz assim: (CEILvalor_liquido*valor_comissao*valor_comissao_receber)/numparc)*numparc_pg)*100)/100) abraços e obrigado a todos 2009/4/8 PAULO p@terra.com.br 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 sergio.serginhos...@gmail.com *To:* Comunidade PostgreSQL Brasileirapgbr-geral@listas.postgresql.org.br *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 (ROUNDvalor_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 Kussamaosvaldo.kuss...@gmail.com escreveu: Em 08/04/09, sergio santossergio.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