Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde pessoal...
Tenho uma tabela com vários valores entre eles alguns valores de centavos então dando ímpares, mais preciso transformar estes valores em par.
Na tabela acima tenho que mudar os centavos, de 09 para 10, de 39 para 40....
Alguém sabe de alguma função ou formula que pode resolver este problema?
Podes fazer da seguinte maneira:
If(Mod(Right(Preço,2),2) = 0, Preço, Preço + 0.01) | as Preço |
Segue um exemplo para melhor entendimento
Edit:
Obs: Esta fórmula está considerando os valores no formato com duas casas decimais após a vírgula. Caso não esteja, terás que fazer a conversão
Abraço!
Podes fazer da seguinte maneira:
If(Mod(Right(Preço,2),2) = 0, Preço, Preço + 0.01) | as Preço |
Segue um exemplo para melhor entendimento
Edit:
Obs: Esta fórmula está considerando os valores no formato com duas casas decimais após a vírgula. Caso não esteja, terás que fazer a conversão
Abraço!
Boa tarde.
Segue um exemplo de como fazer. Deve ter outras formas....
1 | 17,160 | 17,160 | Par |
2 | 17,090 | 17,100 | Impar |
AMF
if(isnull(odd(frac(Valor)*100)),'Impar','Par') as Par_Impar,
Valor + if(isnull(odd(frac(Valor)*100)),0.01,0) as Valor_Par;
Fiz assim na expressão da tabela:
If(Mod(Right(Replace(Num(Left(sum(DISTINCT VAR_VALOR),5),'#.##0,00'),',',','),2),2) = 0 or
Mod(Right(Replace(Num(Left(sum(DISTINCT VAR_VALOR),5),'#.##0,00'),',',','),2),2) = 2 or
Mod(Right(Replace(Num(Left(sum(DISTINCT VAR_VALOR),5),'#.##0,00'),',',','),2),2) = 4 or
Mod(Right(Replace(Num(Left(sum(DISTINCT VAR_VALOR),5),'#.##0,00'),',',','),2),2) = 6 or
Mod(Right(Replace(Num(Left(sum(DISTINCT VAR_VALOR),5),'#.##0,00'),',',','),2),2) = 8, sum(DISTINCT VAR_VALOR), sum(DISTINCT VAR_VALOR) + 0.01)
Mais não está funcionando, pois na conta que eu faço ele traz varias decimais, e se eu pegar só a segunda decimal igual na primeira linha da imagem abaixo o valor vai ser 17,15(Ímpar) mais ela foi arredondada pelo sistema para 17,16, e como a formula entendeu que é um Ímpar ele somou +0.01 que vai ficar como 17,17 que é Ímpar...
Tente usar o round simples
LOAD round(F1,0.02) as F1 INLINE [
F1
"17,16"
"17,09"
"17,39"
"17,16"
"17,09"
"17,39"
"17,16"
"17,10"
"17,39"
"14,76"
];
Utilize a função Round(num, 0.02) para arredondar ou Ceil(num, 0.02) para arredondar para cima.
Exemplos:
Round(17.35,0.02) ==> 17.36 ou 17.34 (não sei tem que testar, mas retornar par)
Ceil(17.35, 0.02) ==> 17.36 (certeza pois arredonda para cima de 0.02 em 0.02)
Valeu pessoal,
Obrigado pela ajuda, fiz funcionar com o exemplo que postado pelo rphpacheco ...