Jump to content
Fivewin Brasil

centavos


marceloCR

Recommended Posts

Senhores,

nao sei se alguem jah passou por isso, mas tenho uma aplicacao onde sao realizadas uma serie de calculos, e algumas vezes, a soma total dos valores apresenta diferença de centavos (axo que arredonda a casa decimal erroneamente)

ex.: 12.90 + 12.99 + 12.43 = 38.32 (as vezes da 38.31 ou .33)

Alguem sabe como resolver?

Marcelo Campos

Harbour 43 + xHarbour 0.99.51 + WS

Link to comment
Share on other sites

Senhores,

nao sei se alguem jah passou por isso, mas tenho uma aplicacao onde sao realizadas uma serie de calculos, e algumas vezes, a soma total dos valores apresenta diferença de centavos (axo que arredonda a casa decimal erroneamente)

ex.: 12.90 + 12.99 + 12.43 = 38.32 (as vezes da 38.31 ou .33)

Alguem sabe como resolver?

Marcelo Campos

Harbour 43 + xHarbour 0.99.51 + WS

Link to comment
Share on other sites

Senhores,

nao sei se alguem jah passou por isso, mas tenho uma aplicacao onde sao realizadas uma serie de calculos, e algumas vezes, a soma total dos valores apresenta diferença de centavos (axo que arredonda a casa decimal erroneamente)

ex.: 12.90 + 12.99 + 12.43 = 38.32 (as vezes da 38.31 ou .33)

Alguem sabe como resolver?

Marcelo Campos

Harbour 43 + xHarbour 0.99.51 + WS

Link to comment
Share on other sites

tenta mudar o teu set decimals to 2 para a quantidade necessaria de decimals dentro dessa rotina ok... e volta ao normal depois de encerrar a rotina...

exemplo...

81.256 se esse for numero da soma ele vai arrendodar para 81.26 pq vc nao aumento a casa decimal para tres....

fw27-blinker7-clipper53B-cdx-Workshop

gabrieis@bol.com.br

Link to comment
Share on other sites

Marcelo, boa tarde..

olha só ... voce tem que verificar se todos os valores da soma estão exatos, ou seja, sem arredondamento...

no seu exemplo mesmo:

12.90 + 12.99 + 12.43 = 38.32 (as vezes da 38.31 ou .33)

imagine que o valor 12,90 por exemplo, foi o resultado de alguma outra operação que voce fez... e digamos ainda que o resultado exato desta operação foi 12,907 ... se sua picture estiver 'setada' para 99.99 voce vai ver 12,90 ... más na hora de somar o processador vai fazer a operação com o numero real... ou seja...

12.907 + 12.99 + 12.43 = seria 38.327 más com a picture em duas casas mostraria 38.33

faz o seguinte, coloca uns pontos de debug no seu codigo e peça para mostrar os valores... não usa o msginfo() pra mostrar valores numericos.. ele se perde as vezes... usa o WQout ...

exemplo.. WQOut( {nvalor1, nvalor2, nvalor3,... nvalorn} )

abraços..

Marllon Figueiredo

Analista de Sistemas ERP/CRM

Porto Alegre - RS

siscatsoftware@hotmail.com

FWH for (x)Harbour, xMate, Clipper, MsSQL, Oracle, Postgres, MySQL, TopConnect, ADS

Versões: FWH 2.6 e 2.7 - xHarbour 0.99.4 - 0.99.51

Link to comment
Share on other sites

Ola, irei postar hoje em dicas a função que utilizo para resolver este problema de arrendondamento.

Nome da função ROUNDING()

Onde você vê um obstáculo alguém vê o término da viagem e o outro vê uma chance de crescer.

Elias Abrão Júnior

Fone : (0**11) 5181-6909 São Paulo - SP

eajunior.fw@terra.com.br

xHarbour 0.99.0 - Fivewin 2.5 e xMate

Link to comment
Share on other sites

Marcelo,

O Marllon está certo. Os valores que você está tratando têm casas decimais acima do que você está mostrando, devido a PICTURE.

Imagine:

nVr_a:= 1.3351 // resultado de algum cálculo

nVr_b:= 1.4652 // idem

nVr_c:= nVr_a + nVr_b

Com a picture "999,999.99", será mostrado:

. nVr_a: 1.34

. nVr_b: 1.47

. nVr_c: 2.80

Embora você mostre com 2 casas decimais, os valores das variáveis continuam os mesmos. Portanto, a soma real está certa, mas o resultado MOSTRADO não.

Nesses casos uso a funçãozinha abaixo:

nVr_a:= 1.3351 // resultado de algum cálculo

nVr_b:= 1.4652 // idem

nVr_c:= VR(nVr_a,2) + VR(nVr_b,2) // (1.34 + 1.47 = 2.81)

---------------------------------------------------------

FUNC VR(__VALOR,__DEC)

__VALOR=STR(__VALOR,16,__DEC)

RETU(VAL(__VALOR))

Espero ter ajudado

assinatpaulo.jpg

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...