Arredondamento - É Impossível ???
ARREDONDAMENTO (denovo)
Preciso de uma função de arredondamento que sigua as regras matematicas !!!!!!!!!
Ex:
1,604 => 1,60
1,605 => 1,61
1,606 => 1,61
ME AJUDEM !!!!
Preciso de uma função de arredondamento que sigua as regras matematicas !!!!!!!!!
Ex:
1,604 => 1,60
1,605 => 1,61
1,606 => 1,61
ME AJUDEM !!!!
Marfred
Curtidas 0
Respostas
Ricvictor
16/12/2003
Olá MarFred ...
No delphi, podesse usar as funções de conversões do tipo FloatToStrF ... aonde você especifica a quantidade de casas, a precisão etc etc etc ... Se necessitar que fique em float mesmo, a variável, basta você converter o resultado novamente para float ... (exemplo: [b:1ad052a2e6]Variável:=StrToFloat(FloatToStrF(campo decimal))[/b:1ad052a2e6]) Caso você queria apenas armazenar o valor já arredondado na sua base de dados, caso seja em SQL, pode-se usar diretamente a função convert ... (exemplo: [b:1ad052a2e6]convert(Numeric(5,2),variavel)[/b:1ad052a2e6]) ... ok ?!
Um abraço.
Ricardo - Natal/RN.
No delphi, podesse usar as funções de conversões do tipo FloatToStrF ... aonde você especifica a quantidade de casas, a precisão etc etc etc ... Se necessitar que fique em float mesmo, a variável, basta você converter o resultado novamente para float ... (exemplo: [b:1ad052a2e6]Variável:=StrToFloat(FloatToStrF(campo decimal))[/b:1ad052a2e6]) Caso você queria apenas armazenar o valor já arredondado na sua base de dados, caso seja em SQL, pode-se usar diretamente a função convert ... (exemplo: [b:1ad052a2e6]convert(Numeric(5,2),variavel)[/b:1ad052a2e6]) ... ok ?!
Um abraço.
Ricardo - Natal/RN.
GOSTEI 0
Nebrio
16/12/2003
Ou apenas usando o FormarFloat assim
Edit1.Text := FormatFloat(´#,0.00´,valor);
T+
Nébrio - Vivo
Edit1.Text := FormatFloat(´#,0.00´,valor);
T+
Nébrio - Vivo
GOSTEI 0
Cebikyn
16/12/2003
Se quiser arredondar o valor, sem transformar em string:
Exemplo:
function RoundN(x: Extended; d: Integer): Extended; const t: array [0..12] of int64 = (1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000); begin if Abs(d) > 12 then raise ERangeError.Create(´RoundN: Value must be in -12..12´); if d = 0 then Result := Int(x) + Int(Frac(x) * 2) else if d > 0 then begin x := x * t[d]; Result := (Int(x) + Int(Frac(x) * 2)) / t[d]; end else begin // d < 0 x := x / t[-d]; Result := (Int(x) + Int(Frac(x) * 2)) * t[-d]; end; end;
Exemplo:
RoundN(123.456, 0) = 123.00 RoundN(123.456, 2) = 123.46 RoundN(123456, -3) = 123000
GOSTEI 0