Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099

Как реализована Double.NaN != Double.NaN

07.02.2018, 12:45. Показов 1702. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Java
1
2
3
4
5
    public static void main(String[] args) {
        Float f1 = new Float(Float.NaN);
        Float f2 = new Float(Float.NaN);
        System.out.println( ""+ (f1 == f2)+" "+f1.equals(f2)+ " "+(Float.NaN == Float.NaN) );
    }
Как в Java сделали так, чтобы статическая переменная класса не была равна по ссылке сама себе? Это уровень компилятора или уровень исполнения?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2018, 12:45
Ответы с готовыми решениями:

Некоторые Ответы Выводятся Как Nan, Хотя Считает Корректно, Вроде
Всем привет В коде в некоторых ответах (значение х равный дробному отрицательному числу, т.е. -3,5; -2,5; -1,5; -0,5; ) выдает nan, а...

Не получается кастить double to Double
Столкнулся с несколько интересной проблемой: компилятор заел на ошибке «error: incompatible types: Double cannot be converted to double...

Запись double[][] в ArrayList<double[][]>
Помогите пожалуйста записать массив double в ArrayList&lt;double&gt;. Дело в том что я провожу вычисления с массивом double и после через...

4
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
07.02.2018, 13:52
Цитата Сообщение от Artmal Посмотреть сообщение
Float.NaN == Float.NaN
Float.NaN имеет тип float, а не Float. И сравнение двух Float.NaN возвращает false (по правилам языка). f1.equals(f2) нарушает это правило, сравнивая битовые представления, которые идентичны для двух Float.NaN.
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
07.02.2018, 13:59
Цитата Сообщение от alex white Посмотреть сообщение
f1.equals(f2) нарушает это правило,
ничего оно не нарушает, в комментах класса Object есть все правила, которым должен соответствовать метод equals
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
07.02.2018, 14:08
Fene4ka_, Object здесь ни при чём, есть правила сравнения float, а есть таковые у Float, и они идентичны за несколькими исключениями, включая NaN
2
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
07.02.2018, 17:10
Цитата Сообщение от alex white Посмотреть сообщение
Object здесь ни при чём, есть правила сравнения float, а есть таковые у Float, и они идентичны за несколькими исключениями, включая NaN
да, вы правы, у Float свои правила сравнения, но тем неменее, правила и там описаны:

Java
1
2
3
4
     * <li>If {@code f1} and {@code f2} both represent
     *     {@code Float.NaN}, then the {@code equals} method returns
     *     {@code true}, even though {@code Float.NaN==Float.NaN}
     *     has the value {@code false}.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2018, 17:10
Помогаю со студенческими работами здесь

Неопределенность NaN
Добрый день. Нужно написать программу нахождения суммы элементов ряда для задоного N. Ряд имеет вид: ((-1)^lg(k))/k. Диапазон . Мой...

Почему на выходе всегда NaN
import static java.lang.Math.pow; import static java.lang.Math.sin; import static java.lang.Math.cos; import static...

Обработка исключений при NaN, Infinity, by zero
Здравствуйте! Подскажите, пожалуйста, как сделать обработку исключений при этих значениях. Типа: try { num = num/2;//если эта...

Как округлить double
Задача: Все элементы массива поделить на значение наибольшего элемента этого массива. Решение Задача состоит из двух подзадач: 1)...

Как работает double?
Вопрос вроде простой, но в Интернете информацию я, как ни искал, не нашел. Почему такая инициализация переменной работает: double...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru