123,456.3412 이라는 수가 있으면
123,000으로 변환하고 싶어서 검색을 해본결과 RoundTo라는 함수를 사용하면 된다고 되어있는데요...
문제는 Math를 선언해주고 RoundTo함수를 사용했는데
[Error] Unit1.pas(38): Undeclared identifier: 'roundto'
라는 결과가 나오는군요... Math유닛에 들어가 뒤져봐도 없더군요..물론 헬프에도 없구요....쩝
저와 같은 분이 몇몇 계시는 걸로 알고 있는데요...델파이 5 이후로는 이 함수가 없어졌나요..?
어떻게 해야 할까요...고수님들 부탁할께요..
TRoundToRange = -37..37;
function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;
function IntPower(const Base: Extended; const Exponent: Integer): Extended register;
function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double;
var
LFactor: Double;
begin
LFactor := IntPower(10, ADigit);
Result := Round(AValue / LFactor) * LFactor;
end;
function IntPower(const Base: Extended; const Exponent: Integer): Extended;
asm
mov ecx, eax
cdq
fld1 { Result := 1 }
xor eax, edx
sub eax, edx { eax := Abs(Exponent) }
jz @@3
fld Base
jmp @@2
@@1: fmul ST, ST { X := Base * Base }
@@2: shr eax,1
jnc @@1
fmul ST(1),ST { Result := Result * X }
jnz @@1
fstp st { pop X from FPU stack }
cmp ecx, 0
jge @@3
fld1
fdivrp { Result := 1 / Result }
@@3:
fwait
end;
라운드라는 함수는 있겠죠?
델파이 6 에 있는 함수입니다.
델파이 5 에는 없나부죠??