Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2008, 16:28   #1
Infernal13
 
Регистрация: 05.12.2007
Сообщений: 7
По умолчанию НЕ целочисленное деление

В delphi есть оператор mod, но в нём могут использоваться только целые числа, тогда как во многих др. языках в делении по модулю можно использовать либо нецелые числа, либо существуют два вида оперетов - для целых и не целых чисел. Может и в delphi что похожее есть или же существует простенький алгоритм реализующий это.
Infernal13 вне форума Ответить с цитированием
Старый 28.04.2008, 17:31   #2
krypton
Пользователь
 
Аватар для krypton
 
Регистрация: 26.06.2007
Сообщений: 22
По умолчанию

Тогда сначало round() затем mod.
Дорогу одолеет идущий.
http://www.krypton.ucoz.net
"Кто владеет информацией - тот владеет миром!"
Уинстон Черчиль (Натан Ротшильд, Френсис Бекон)
krypton вне форума Ответить с цитированием
Старый 28.04.2008, 17:44   #3
Infernal13
 
Регистрация: 05.12.2007
Сообщений: 7
По умолчанию

Вообще то если округлить например 0,2 то получится 0, а ноль не может быть использован в mod.
Infernal13 вне форума Ответить с цитированием
Старый 28.04.2008, 19:03   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
//для целых чисел
c:=a mod b; //возвращает остаток от деления "a" на "b"
c:=a div b; //возвращает целую часть от деления "a" на "b"
//для вещественных чисел
c:=a/b;
Цитата:
Вообще то если округлить например 0,2 то получится 0, а ноль не может быть использован в mod.
А в "других" языках разве не так???
_Dmitry вне форума Ответить с цитированием
Старый 28.04.2008, 19:16   #5
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Стрелка Из хэлпа на VBA

result = number1 Mod number2

number1 Required; any numeric expression.
number2 Required; any numeric expression.

Remarks

The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) and returns only the remainder as result. For example, in the following expression, A (result) equals 5.

A = 19 Mod 6.7
дмидми вне форума Ответить с цитированием
Старый 28.04.2008, 19:24   #6
Infernal13
 
Регистрация: 05.12.2007
Сообщений: 7
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Код:
//для целых чисел
c:=a mod b; //возвращает остаток от деления "a" на "b"
c:=a div b; //возвращает целую часть от деления "a" на "b"
//для вещественных чисел
c:=a/b;
А в "других" языках разве не так???
Мне нобходимо деление по модулю.
На Си например есть fmod в matlab в mod можно использовать как целые так и дробные числа.
Infernal13 вне форума Ответить с цитированием
Старый 28.04.2008, 19:25   #7
Infernal13
 
Регистрация: 05.12.2007
Сообщений: 7
По умолчанию

Цитата:
Сообщение от дмидми Посмотреть сообщение
result = number1 Mod number2

number1 Required; any numeric expression.
number2 Required; any numeric expression.

Remarks

The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) and returns only the remainder as result. For example, in the following expression, A (result) equals 5.

A = 19 Mod 6.7
Что мне VBA мне нужен Delphi.
Infernal13 вне форума Ответить с цитированием
Старый 28.04.2008, 19:34   #8
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Округляем и считаем:
A:=19 mod round(6.7);
результат тот же самый, что и в VBA.
Вопрос то был про A = 19 Mod 0.2, VBA так же выдает ошибку деления на ноль.
_Dmitry вне форума Ответить с цитированием
Старый 28.04.2008, 19:36   #9
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от Infernal13 Посмотреть сообщение
Может и в delphi что похожее есть или же существует простенький алгоритм реализующий это.
Можно сделать простенькую функцию с использованием ассемблера:
Код:
function fmod(a,b:double):double;
asm
fld b
fld a
@part:
fprem1
fstsw ax
test ah, 100b
jnz @part
fxch
fstp st
end;
Somebody вне форума Ответить с цитированием
Старый 28.04.2008, 19:41   #10
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Смех Тс-с-с!

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
VBA так же выдает ошибку деления на ноль.
(Шопотом.)
Дайте ребёнку самому вспомнить про оператор If
дмидми вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
деление многочленов oleiiika Паскаль, Turbo Pascal, PascalABC.NET 1 21.06.2008 16:30
Умножение и деление StiTch_Parazit Помощь студентам 10 20.05.2008 14:32
Деление графа на куски Tito Помощь студентам 1 22.12.2007 22:59
Цлочисленное деление в С# Наташка Общие вопросы C/C++ 1 05.06.2007 21:44
деление natasha Общие вопросы Delphi 6 22.01.2007 12:39