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 PIMBAAAAAAAAAAAAAAAAAAAAAAAAA
funcionu

vejam a função:
    function arredondar_dois_decimal($valor) {
       $float_arredondar=ceil($valor*100)/100;
       return $float_arredondar;
    }

já no SQL fiz assim:
(CEIL((((valor_liquido*valor_comissao*valor_comissao_receber)/numparc)*numparc_pg)*100)/100)

abraços e obrigado a todos

2009/4/8 PAULO <[email protected]>

>  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 <[email protected]>
> *To:* Comunidade PostgreSQL Brasileira<[email protected]>
> *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
> (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
>
> ------------------------------
> E-mail verificado pelo Terra Anti-Spam.
> Para classificar esta mensagem como spam ou não spam, clique 
> aqui<http://mail.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCYyMjgyNDU3I3Blcm0hdGVycmEmMSwxMjM5MjE2NTAxLjE4MjQwNS4xMDA4MS50YWNhbWFjYS5oc3QudGVycmEuY29tLmJyLDE0Nzg0TerraMail>
> .
> Verifique periodicamente a pasta Spam para garantir que apenas mensagens
> indesejadas sejam classificadas como Spam.
>
> ------------------------------
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
> ------------------------------
>
>
> Nenhum vírus encontrado nessa mensagem recebida.
> Verificado por AVG - www.avgbrasil.com.br
> Versão: 8.5.285 / Banco de dados de vírus: 270.11.47/2047 - Data de
> Lançamento: 04/08/09 05:53:00
>
>
> _______________________________________________
> 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