Help Mod Function

Тема в разделе "Delphi - FAQ", создана пользователем -, 7 сен 2010.

Статус темы:
Закрыта.
  1. Гость

    Добрый день, пытаюсь перевести некую функцию на Паскаль. Сама функция написана на 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;
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    скорее всего, да.
    А mod в Паскале целочисленный, поэтому явно не то.
     
  3. Гость

    Какие будут предложения
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    вы ж сами правильно предположили, что данная конструкция в фокспро использовалась для выделения дробной части.
    т.е. надо Frac(X) Результат - дробная часть X, то есть Frac(X) = X-Int(X).
     
  5. etc

    etc Гость

    Прочитать чего нибудь.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей