Decimais me dando dor de cabeça. (rs rs rs)
Boa tarde amigos,
Tenho um probleminha e espero contar com a ajuda de vcs. Tenho alguns campos numéricos que são utilizados entre si num cálculo. Acontece que o
resultado, embora não mostre, registra vários decimais, como por exemplo: 40,00 * 20¬ = 48,00 dividido em 7 parcelas resulta em
6,8571428571428571428571428571429. No campo resultado é exibido o valor 6,86, porém, para um outro cálculo utilizando este valor será
considerado todos os decimais (0,8571428571428571428571428571429) e não somente o (0,86).
A pergunta é como utilizar somente o que está sendo exibido?
Certo da atenção de todos vcs, agradeço desde já.
Tenho um probleminha e espero contar com a ajuda de vcs. Tenho alguns campos numéricos que são utilizados entre si num cálculo. Acontece que o
resultado, embora não mostre, registra vários decimais, como por exemplo: 40,00 * 20¬ = 48,00 dividido em 7 parcelas resulta em
6,8571428571428571428571428571429. No campo resultado é exibido o valor 6,86, porém, para um outro cálculo utilizando este valor será
considerado todos os decimais (0,8571428571428571428571428571429) e não somente o (0,86).
A pergunta é como utilizar somente o que está sendo exibido?
Certo da atenção de todos vcs, agradeço desde já.
Pro-luck
Curtidas 0
Respostas
Lucas Silva
24/12/2006
tenta usar o [b:c52a2b8241]formatfloat[/b:c52a2b8241]
GOSTEI 0
Tnaires
24/12/2006
Olá
Você pode cortar o mal pela raiz, dividindo as parcelas do seguinte modo.
Usando a seguinte convenção:
T = valor total a ser dividido;
n = número total de parcelas;
p = valor da parcela = T / n
O que eu faço é: gero (n - 1) parcelas do valor arredondado de p.
E o valor da última parcela será T - [p * (n - 1)]
Usando o seu exemplo, teríamos:
T = 48,00
n = 7 parcelas
p = 48,00 / 7 = 6,8571428571428571428571428571429
Arredondando: p = 6,86 ( pode usar a função RoundTo pra fazer isso ).
Calculando o valor da última parcela ( 7ª, neste exemplo ): 48,00 - [6,86 * (7 - 1)] = 48,00 - 41,16 = 6,84
Ou seja, teríamos 6 parcelas de 6,86, e a última de 6,84. Bem melhor do que gravar no banco 7 parcelas de 6,8571428571428571428571428571429.
Isso evita que você tenha que lidar com números quebrados, e não altera o valor total a ser pago.
Abraços.
Você pode cortar o mal pela raiz, dividindo as parcelas do seguinte modo.
Usando a seguinte convenção:
T = valor total a ser dividido;
n = número total de parcelas;
p = valor da parcela = T / n
O que eu faço é: gero (n - 1) parcelas do valor arredondado de p.
E o valor da última parcela será T - [p * (n - 1)]
Usando o seu exemplo, teríamos:
T = 48,00
n = 7 parcelas
p = 48,00 / 7 = 6,8571428571428571428571428571429
Arredondando: p = 6,86 ( pode usar a função RoundTo pra fazer isso ).
Calculando o valor da última parcela ( 7ª, neste exemplo ): 48,00 - [6,86 * (7 - 1)] = 48,00 - 41,16 = 6,84
Ou seja, teríamos 6 parcelas de 6,86, e a última de 6,84. Bem melhor do que gravar no banco 7 parcelas de 6,8571428571428571428571428571429.
Isso evita que você tenha que lidar com números quebrados, e não altera o valor total a ser pago.
Abraços.
GOSTEI 0