Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

Деление на 0   Найти похожие ветки 

 
MVova ©   (2003-07-21 17:39) [0]

Всем привет.

На одной машине заметили "фичу", при выполнении данного кода машина зависает на 2 - 60 сек и уходит в перезагрузку.
Windows98

procedure TForm1.Button1Click(Sender: TObject);
var
P : Double;
begin
P := 0;
P := 10/P;
if P = 1 then;
end;


 
Skier ©   (2003-07-21 17:42) [1]

И что ?


 
Caligula   (2003-07-21 17:43) [2]

Видимо, хотел, вирус на основе этой штучки сделать...


 
MVova ©   (2003-07-21 17:50) [3]


> Skier © (21.07.03 17:42)

Неприятно.
Как с этим бороться?


> Caligula (21.07.03 17:43)

И получилось, не скажу как :)


 
Skier ©   (2003-07-21 17:51) [4]

>MVova © (21.07.03 17:50)

> Как с этим бороться?


try-except-end


 
MVova ©   (2003-07-21 17:57) [5]


> Skier © (21.07.03 17:51)

Если б было так просто.
Не помогает.


 
ZrenBy ©   (2003-07-21 17:58) [6]

>>Skier © (21.07.03 17:51)

Не поможет.
На некоторых процессорах - мгновенная голубая смерть

только явная проверка if(P=0)


 
MVova ©   (2003-07-21 18:02) [7]


> ZrenBy © (21.07.03 17:58)

Та до этого год работало


 
Skier ©   (2003-07-21 18:04) [8]

Ну...не знаю у меня работает :


var
P : Double;
begin
try
P := 0;
P := 10/P;
if P = 1 then;
except
ShowMessage("Division By Zero !");
end; //try
end;


Но слышал я такую штуку, что деление на ноль уже не является
ошибкой (а является -/+ бесконечностью), таково требование Intel"a к компиляторам.


 
MVova ©   (2003-07-21 18:07) [9]


> Skier © (21.07.03 18:04)

Оно и должно работать.
Это что-то или с windows или с железом, если кто-то такое исправлял, подскажите.


 
ZrenBy ©   (2003-07-21 18:09) [10]

>>... у меня работает

:). Ага, у меня тоже все работает,
а у заказчика на какой-то левой машине - синий экран.
С тех пор в корку въелось - проверяю на 0


 
VMcL ©   (2003-07-21 18:09) [11]

$SafeDivide ?


 
Skier ©   (2003-07-21 18:10) [12]

>MVova © (21.07.03 18:07)
Есть ещё баг от программистов Windows для Win95/98 (если я правильно помню...). Баг состоит в некорретном работе (восстановлении) с управляющем словом сопроцессора, только я не уверен что здесь это уместно.
Вот статья : http://www.delphikingdom.ru/helloworld/reals.htm



 
MVova ©   (2003-07-21 18:20) [13]


> VMcL © (21.07.03 18:09)

$SafeDivide On
$SafeDivide Off
Без разницы, эффект тот же.


 
VMcL ©   (2003-07-21 18:42) [14]

>MVova © (21.07.03 18:20)

Ну это я на всякий случай - это, вроде, только на старых Пнях бывает.


 
Anatoly Podgoretsky ©   (2003-07-21 19:52) [15]

Skier © (21.07.03 18:04)
И правильно.
N=100;
N/10 -> 10
N/1 -> 100
N/0.1 -> 1000
N/0.01 -> 10000
N/0.0...1 -> 0 = 10..................0
N/0 = INF




 
MVova ©   (2003-07-21 19:58) [16]


> Anatoly Podgoretsky © (21.07.03 19:52)

Я это понимаю. Должно быть сообщение, а не перегружатся.


 
Романов Р.В. ©   (2003-07-21 19:59) [17]


> Anatoly Podgoretsky © (21.07.03 19:52)


А чему равно

2*Inf/Inf = ? (Inf - бесконечность)


 
Anatoly Podgoretsky ©   (2003-07-21 20:10) [18]

Обратись к математикам, не все операции с бесконечностью имеют смысл и допустимы


 
Aldor ©   (2003-07-21 20:24) [19]

2 Романов Р.В.

Если бесконечности одного порядка, то выражение равно двум, иначе - нулю или бесконечности.


 
Романов Р.В. ©   (2003-07-21 20:34) [20]

Зачем вводить в процессоре понятие бесконечности, если с ним нельзя осуществлять математические операции? С нулем еще не разобрались, а уже руки к бесконечности потянули :)))


 
Morfein ©   (2003-07-21 20:37) [21]

2*Inf/Inf в пределе стремится к единице


 
Serginio   (2003-07-21 21:00) [22]

2(Романов Р.В. © (21.07.03 20:34)) На этом все дифферинциальные уравнения все построены. Уровень старших классов. А вот проблема проблема численного решения диф уравнений и увеличения значимости числа актуальна.


 
Best Gun   (2003-07-21 21:35) [23]

Че вы херню несете?

2*Inf/Inf

Это неопределенность. Как ни крутитесь

Тоже самое, что 0/0

Или если угодно 2*0/0


 
JohnJ ©   (2003-07-22 03:03) [24]

Best Gun: Ты давно школу закончил?
Inf/Inf=1, если бесконечности равного порядка!!!, т.е. если x->Inf, то x/x=1, x/x^2=0, x^n/x=x^(n-1)=Inf;
а с нулём тоже самое, потому что бескочность, это 1/0.


 
Alex Konshin ©   (2003-07-22 08:02) [25]

Ты это зря про школу вспомнил. Ты сам не прав.
Мы вот еще и университет помним.
вспомни про 2x/x -> 2, бесконечности одного порядка, не так ли?




 
KSergey ©   (2003-07-22 08:30) [26]

ZrenBy © (21.07.03 17:58)
только явная проверка if(P=0)


И часто такая проверка помогает при условии, что P типа Real, например? Как-то сомнения разбирают...


 
121   (2003-07-22 10:18) [27]

>2*Inf/Inf
производную ищитеЖ)


 
Fantasist   (2003-07-23 05:55) [28]


> если бесконечности равного порядка


Вообще, конечно, "порядок бесконечности" - это новое слово в математике. Они так и говорят: бесконечность порядка n деленая на бесконечность порядка n-1 дает бесконечность порядка 1. А ежели наоборот, то это бесконечность порядка -1. Что самое интересное при этом, что бесконечность порядка 1 равна бесконечности любого положительного порядка, а бесконечность отрицательного или равного нулю порядка равна нулю. Так что с бесконечнотсями теперь полный порядок.


> 2*Inf/Inf в пределе стремится к единице


В пределе чего? Бесконечности? Типа при бесконечности стремящейся к бесконечности данное выражение стремиться к 2*1. Однко же если бесконечность никуда не устремлять (т. е. не рассматривать ее в пределе), то явная неопределенность. Вообще, предел бесконечности - это тоже новое слово в математике, но о нем в следующий раз.


> (а является -/+ бесконечностью), таково требование Intel"a
> к компиляторам


Ага, а в процессоре будет специальный регистр IF (Infinity Flag), который будет высталяться при делении на ноль. Куда эту бесконечность записывать? Или просто зафигачивать максимальное значение в переменную? Как много процессор знает о переменных?



Страницы: 1 вся ветка

Текущий архив: 2003.08.04;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.013 c
3-10108
McSimm2
2003-07-14 14:12
2003.08.04
---|Ветка была без названия|---


14-10440
Skier
2003-07-17 13:01
2003.08.04
Ральф Шумахер в Москве...


6-10336
Dwemer
2003-05-30 04:05
2003.08.04
NMURL и Дельфи 7


4-10528
mod
2003-06-03 16:56
2003.08.04
Раскладка клавиатуры


1-10235
Nucl
2003-07-21 11:07
2003.08.04
Смена картинки на кнопке