ОБСУЖДЕНИЕ

Help Mod Function

4 ответов 5,9 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Добрый день, пытаюсь перевести некую функцию на Паскаль. Сама функция написана на 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;
 
скорее всего, да.
А mod в Паскале целочисленный, поэтому явно не то.
 
Какие будут предложения
 
// здесь получаю 0 но это не так. Mожет-быть здесь получить дробную часть числа frac()?
вы ж сами правильно предположили, что данная конструкция в фокспро использовалась для выделения дробной части.
т.е. надо Frac(X) Результат - дробная часть X, то есть Frac(X) = X-Int(X).
 
Статус
Закрыто для дальнейших ответов.

Ещё по теме