[quote=DioD]может быть округления и хорошие годные но те же в большую меньшую сторону работают неверно так как варкрафт округляет сам туда куда надо.
Ну а ты проверь. :) Я тестил, у меня все замечательно работает.
R2I просто отбрасывает всё, что после запятой. Было 3.6 - станет 3. Было -3.6 - станет аналогично -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
» WarCraft 3 / Библиотека функций
R2I просто отбрасывает всё, что после запятой. Было 3.6 - станет 3. Было -3.6 - станет аналогично -3.
» WarCraft 3 / Библиотека функций
Наткнулся на проблему отсутствия в JASS'e нормальных округлений.
Быстренько написал рабочие аналоги из более вменяемых языков. Ничего особенного, тем более, что первые две имеют аналоги в BJ, но, может быть, пригодиться кому из новичков: