7

» WarCraft 3 / Библиотека функций

[quote=DioD]может быть округления и хорошие годные но те же в большую меньшую сторону работают неверно так как варкрафт округляет сам туда куда надо.
Ну а ты проверь. :) Я тестил, у меня все замечательно работает.
R2I просто отбрасывает всё, что после запятой. Было 3.6 - станет 3. Было -3.6 - станет аналогично -3.
7

» WarCraft 3 / Библиотека функций

Может быть, уже было где-то.
Наткнулся на проблему отсутствия в JASS'e нормальных округлений.
Быстренько написал рабочие аналоги из более вменяемых языков. Ничего особенного, тем более, что первые две имеют аналоги в BJ, но, может быть, пригодиться кому из новичков:
Хорошие, годные округления
function MathAbsReal takes real r returns real //Реальное по модулю
    if r<0 then
        set r=-r
    endif
    return r
endfunction

function MathAbsInteger takes integer i returns integer //Целочисл. по модулю
    if i<0 then
        set i=-i
    endif
    return i
endfunction

function MathFraction takes real r returns real //Нахождение дробной части числа со знаком
    return r-R2I(r)
endfunction

function MathRound takes real r returns integer //Округление к ближайшему целому, традиционное (половина-туда, половина-сюда)
    if r>=0 then
        return R2I((r+.5))
    else
        return R2I((r-.5))
    endif
endfunction

function MathCeil takes real r returns integer //Округление в большую сторону
    if r>=0 and MathFraction(r)!=0 then
        return R2I(r+1)
    else
        return R2I(r)
    endif
endfunction

function MathFloor takes real r returns integer //Округдение в меньшую сторону
    if r<0 and MathFraction(r)!=0 then
        return R2I(r-1)
    else
        return R2I(r)
    endif
endfunction