Help Mod Function

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Добрый день, пытаюсь перевести некую функцию на Паскаль. Сама функция написана на foxpro.

FUNCTION inn2reg
LPARAMETERS L_INN, L_KPP, NYEAR
LOCAL CK, NK, CKFULL
IF EMPTY(L_KPP)
L_KPP = "99"
ENDIF
NK = VAL(L_INN)*VAL(L_KPP)/(NYEAR-2000)
NK = NK*3
NK = LOG10(NK)
NK = MOD(NK, 1) // вот здесь у меня стоп
CK = STR(NK, 17, 15)
CK = RIGHT(CK, 15)
CKFULL = LEFT(CK, 3)+"-"+SUBSTR(CK, 4, 3)+"-"+SUBSTR(CK, 7, 3)+"-"+SUBSTR(CK, 10, 3)+"-"+SUBSTR(CK, 13, 3)
RETURN CK
ENDFUNC

вот что получилось:

function inn2reg(L_INN:real; L_KPP:real; NYEAR:real):string;
var CK:string; NK:real; CKFULL:string;int:integer;
begin
if L_KPP=0 then L_KPP:=99;
NK:= L_INN*L_KPP/NYEAR-2000;
NK:= NK*3;
NK:= LOG10(NK);
nk:=nk mod 1; // здесь получаю 0 но это не так. Mожет-быть здесь получить дробную часть числа frac()?

str(nk:17:15,ck);
ck:=ansirightstr(ck,15);
CKFULL:=ansileftstr(ck,3)+'-'+copy(CK, 4, 3)+'-'+copy(CK, 7, 3)+'-'+copy(CK, 10, 3)+'-'
+copy(CK, 13, 3);
result:=CKFULL;

end;
 
H

hosm

скорее всего, да.
А mod в Паскале целочисленный, поэтому явно не то.
 
H

hosm

// здесь получаю 0 но это не так. Mожет-быть здесь получить дробную часть числа frac()?
вы ж сами правильно предположили, что данная конструкция в фокспро использовалась для выделения дробной части.
т.е. надо Frac(X) Результат - дробная часть X, то есть Frac(X) = X-Int(X).
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!