Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Деление на 0
|
|||
|---|---|---|---|
|
#18+
Может, конечно, я раскажу всем извесную вещь но я столкнулся с ней впервые... итак, заниматься будем совершенно безполезным делом, делить на 0, итак, приступимс... Для начала пробуем такой код: Код: plaintext 1. 2. 3. 4. 5. 6. "Attempted to divide by zero" А вот так? Код: plaintext 1. 2. 3. 4. 5. 6. Но прошу заметить, программа отработала коректно. А что если мы попробуем дальше че нибудь сделать? Дописываем: res /= double.MaxValue И получаем? Тоже... Пробуем по другому: res *= 0 Вот тут вот результат интересный Nan... Как объяснить эти чудеса? Для ответа на сей вопрос углубляемся в маны, а точнеее в раздел, в который думаю никогда не приходилось заглядывать: / operator и читаем: Код: plaintext 1. 2. 3. 4. 5. Читаем дальше: The floating-point operators, including the assignment operators, do not throw exceptions. Instead, in exceptional situations, the result of a floating-point peration is zero, infinity, or NaN, as described below: -If the result of a floating-point operation is too small for the destination format, the result of the operation is zero. -If the magnitude of the result of a floating-point operation is too large for the estination format, the result of the operation is PositiveInfinity or NegativeInfinity, is appropriate for the sign of the result. -If a floating-point operation is invalid, the result of the operation is NaN. -If one or both operands of a floating-point operation are NaN, the result of the operation is NaN. Ага, вот вам и весь прикол... Утверждать не буду но я подозреваю что все сначала приводиться к decimal, вычисляется, а потом приводится обратно... Последний вопрос, как отловить сего зверя (бесконечность)? Ответ неожиданно прост: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. _________________________________________________ Легче написать не правильную программу чем понять правильную (С) Alan Perlis ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 15:22 |
|
||
|
|

start [/forum/topic.php?fid=20&gotonew=1&tid=1438903]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 511ms |

| 0 / 0 |
