Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Double.PositiveInfinity 
:(
    Опции темы
Idsa
Дата 11.4.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Я решил посмотреть, как в Double реализованы бесконечности... и вот на что наткнулся в рефлекторе:
Код

public const double PositiveInfinity = (double) 1.0 / (double) 0.0;

Т. е., по всей видимости, для double каким-то интересным образом переопределена операция деления. Однако в рефлекторе ничего подобного я не нашел.
Так как же все-таки реализовывается деление на ноль для double?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Void
Дата 11.4.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Формат IEEE 754 для чисел с плавающей точкой определяет специальные значения, такие как бесконечность и NaN (Not a Number). Результатом деления на ноль является именно бесконечность.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Idsa
Дата 11.4.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Void, это все понятно... но я спрашивал именно о реализации.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Void
Дата 11.4.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Реализации чего? Так оно работает на аппаратном уровне. И от языка это не зависит.
Код
#include <stdio.h>

int main(void)
{
    double zero = 0.0;
    double inf = 1.0 / zero;
    printf("%lf", inf);
    // выводит 1.#INF00 или что-то в этом роде
}



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Idsa
Дата 11.4.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Понятненько


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
mr.DUDA
Дата 11.4.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



В принципе, можно и напрямую загружать во флоат значение +INF (как в книге по Ассемблеру тов. Юрьева), но это потребовало бы кастовать 4-байтный int в 4-байтный float, а сие действие нельзя выполнить без unsafe. Кроме того, мало ли как на конкретной платформе реально выглядит INF (например в XBox360), и к тому же вдруг это изменится в будущем... smile


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.