![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
аналог div и mod для не integer [D7, WinXP]
ghg © (2004-10-13 11:26:00)есть переменная типа single
нужно знать остаток ее от деления на целое и тоже самое относительно div
никак не могу придумать чтобы все случаи учесть (отрицательные числа и т.д.)
может у кого есть готовое?
ghg (2004-10-13 12:50:00) [1]2 VMcL © (13.10.04 12:14) [6]
сенкс, именно Int и искал
Anatoly Podgoretsky (2004-10-13 12:46:00) [2]ghg © (13.10.04 11:32) [2]
Не 2, а 2.98...
Остаток 0, число поделилось без остатка
cvg (2004-10-13 12:17:00) [3]Чем тебе floor для положительных и ceiling для отрицательных не нравится? А еще лучше -- int.
VMcL (2004-10-13 12:14:00) [4]>> ghg © (13.10.04 11:42) [4]
function FloatDiv(const A, B: Double): Double;
begin
Result := Int(A / B);
end;
function FloatMod(const A, B: Double): Double;
begin
Result := A - Int(A / B) * B;
end;
Amoeba (2004-10-13 12:12:00) [5]
> ghg © (13.10.04 11:42) [4]
Посмотри, какие ф-ии есть в модуле Math. Полагаю, тогда решение само придет в голову.
ghg (2004-10-13 11:42:00) [6]и как мне найти эту дробную часть?
пользоваться Round() и после этого из переменной вычитать то что получилось после округления учитывая в какую сторону мы округлили так что ли?
может есть правильнее способ?
cvg (2004-10-13 11:33:00) [7]Умножай дробную часть частного на делитель. Для отрицательных думай сам.
ghg (2004-10-13 11:32:00) [8]почему?
134.25/45=2 плюс остаток 44.25
Anatoly Podgoretsky (2004-10-13 11:29:00) [9]Функция mod не имеет смысла для чисел с плавающей запятой, нет там ни каких остатков, всегда делится.