PROBLEMA EM CALCULO

ICHIHARA 10/08/2009 16:46:23
#319490
Boa Tarde!!!

Tenho este calculo int ((1200.6 / 2) * 100) / 100 que deveria dar

600,30

porem esta dando 600,29

Porque isto esta ocorrendo? se eu jogo no excel funciona...


Obrigado!
OPTIMUS 10/08/2009 16:52:04
#319491
CONVERTA A EXPRESSÃO PARA DOUBLE E FORMATE COM DUAS CASAS DECIMAIS.
EX.: Format(CDbl((1200.6 / 2) * 100) / 100, [Ô]###,##0.00[Ô])
DOUTORX 10/08/2009 16:52:43
#319492
O problema é o seu INT

é só retirar o INT que funciona.. Assim:

((1200.6 / 2) * 100) / 100

Até +
ROBIU 10/08/2009 16:53:18
#319493
Cdec((1200.6 / 2) * 100) / 100
ICHIHARA 10/08/2009 17:04:13
#319494
Ola! Obrigado a todos

Mas porque com int nao funciona? Se eu coloco no excel funciona.... sera que é bug?

Esta funcao criei para fazer calculos que o resultado pega somente duas casas decimais. Ou seja pego um valor e divido por outro
quero considerar somente as duas casas decimais SEM ARRENDONDAR NADA se der 122,999 quero que fique 122,99 endende?

Abracos
TECLA 10/08/2009 17:10:18
#319495
Troque o Int por CDbl.
DOUTORX 10/08/2009 17:16:14
#319497
O INT ele é para usar com Números Inteiros... Logo se você usar 1200.6 com o uso do INT irá ficar 1200 entendeu?
Sem o INT o número continua 1200.6



Ate +
ICHIHARA 10/08/2009 17:35:33
#319498
Ola!

Estou utilizando a funcao int para ele pegar a parte inteira do resultado, ou seja quando eu multiplico 1545,558 (tres casas) por 100 = 154555 ai pego ele valor e divido por 100 temos 1545,55 !! ou seja com duas casas decimais sem arredondamento.
ROBIU 11/08/2009 08:36:49
#319541
Você tem razão IChihara!
O resultado de int ((1200.6 / 2) * 100) deveria ser 60030 e está dando 60029.
Para obter o mesmo resultado do excel, faça assim:

Int(CDec(1200.655 / 2) * 100) / 100


ICHIHARA 11/08/2009 08:55:51
#319543
Ola pessoal!

Robiu, porque tenho que utilizar a funcao Cdec? pelo que entendi ela força o retorno do calculo como decimal.
se estou tratando de numeros porque preciso utiliza-la?

Abracos
RICART 11/08/2009 09:32:58
#319548
Ichihara,
Acho que a questão é que vc tentou utilizar uma lógica para não arredondar as casas decimais.

Eu faria da seguinte forma: (há várias formas de fazer, mas acho essa mais simples).

Abs(Valor * 100)/100

Ou seja: se eu tenho o valor

Considerando que precisaria ter uma função para esse cálculo, que seria corriqueiro no meu aplicativo.

Function TiraDecimais(nValor as Double, nCasas as integer) as double [ô]Pode ser Currency também
Dim nDecimais as integer
nDecimais = 10^nCasas [ô]para saber com quantas casas decimais vai ser retornado o número

TiraDecimais = Abs(nvalor * nDecimais) / nDecimais

End Function

chamaria a funcao assim: msgbox TiraDecimais(1200.6 / 2, 2)
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas