подскажите, как выделить целое из реального числа. не округлить, а именно целое.
пример 27,42 -> 27 или 65,98 -> 65.
подскажите, как выделить целое из реального числа. не округлить, а именно целое.
пример 27,42 -> 27 или 65,98 -> 65.
a: real; Исходное число
b: DINT; результат
код:
b:=REAL_TO_DINT(a);
if (a>=0) then
if (DINT_TO_REAL(b)>a) then
b:=b-1;
end_if
else
if (DINT_TO_REAL(b)<a) then
b:=b+1;
end_if
end_if
Вот так правильнее при отриц. числах
Последний раз редактировалось Филоненко Владислав; 24.12.2008 в 20:46.
филоненко владислав, спасибо.
ток с отрицательными пришлось переделать...
b:=REAL_TO_DINT(a);
if (DINT_TO_REAL(b)>a) and b>0 then
b:=b-1;
end_if
if (DINT_TO_REAL(b) < a ) and b<0 then
b:=b+1;
end_if
ps пордон не увидел. страницу не обновлял....
еще раз спасибо за идею.
а чем оператор Trunc не подходит?
игорь петров, очень даже подходит! ток я про него не сном, не духом. спасибо за наводку.
REAL_TO_INT округляет до ближайшего целого, а TRUNC извлекает целое.
А подскажите пожалуйста, как округлить число до одного знака после запятой? К примеру:
26.83781 -> 26.8
26.88781 -> 26.9
Ремонтно-строительная компания, г.Ставрополь
Умножить на 10 > взять целое > разделить на 10.
Большое спасибо! Отличная идея!)
Ремонтно-строительная компания, г.Ставрополь
out:=INT_TO_REAL(REAL_TO_INT((t-TRUNC(t))*10))/10+TRUNC(t);
Последний раз редактировалось Okmor; 01.06.2011 в 17:49.