Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.03.19;
Скачать: [xml.tar.bz2];

Вниз

Сравнение Double   Найти похожие ветки 

 
Дмитрий С ©   (2015-07-06 22:55) [0]

Тип Double занимает 8 байт, int64 тоже. Пусть
a1: double;
a2: int64 absolute a1;
b1: double;
b2: int64 absolute b1;

Верно ли, что
если a1 > b1, то a2 > b2
если a1 < b1, то a2 < b2

Уточню, что double представлен в формате IEEE 754


 
Дмитрий С ©   (2015-07-07 00:03) [1]

Почитав теория, а именно как хранится знак числа с плавающей точкой я сделал вывод, что для отрицательных значений предположение не верно.
Проверил - действительно.


Random random = new Random();
       while (true) {
           Double a = random.nextDouble() * random.nextInt(Integer.MAX_VALUE) * (random.nextBoolean() ? 1 : -1);
           Double b = random.nextDouble() * random.nextInt(Integer.MAX_VALUE) * (random.nextBoolean() ? 1 : -1);
           if ((a > b && Double.doubleToRawLongBits(a) < Double.doubleToRawLongBits(b)) || (a < b && Double.doubleToRawLongBits(a) > Double.doubleToRawLongBits(b))) {
               System.out.printf("%s %s // %d %d%n", a, b, Double.doubleToRawLongBits(a), Double.doubleToRawLongBits(b));
           }
       }


 
Kilkennycat ©   (2015-07-07 00:56) [2]


> Верно ли, что
> если a1 > b1, то a2 > b2
> если a1 < b1, то a2 < b2

это утверждение неверно независимо от типов, версии делфи, наличия программиста и электричества в розетке.


 
Германн ©   (2015-07-07 01:39) [3]

Удалено модератором
Примечание: Выражения выбираем


 
brother ©   (2015-07-07 04:31) [4]

ROUND уже не помогает?


 
MBo ©   (2015-07-07 05:31) [5]

Вот тут в начале показан трюк для того, чтобы можно было сравнивать:
http://stereopsis.com/radix.html


 
Дмитрий С ©   (2015-07-07 09:23) [6]


> MBo ©   (07.07.15 05:31) [5]

Спасибо, то что нужно. Сам тоже к этому пришёл.

Моя задача хранить даблы так, чтобы их можно было сравнить, сравнивая память или целочисленное представление памяти. Это нужно для построения универсального индекса.


 
brother ©   (2015-07-07 18:09) [7]

> Это нужно для построения универсального индекса.

почему нельзя хранить int?
0.1234
1234
?


 
Дмитрий С ©   (2015-07-07 19:21) [8]


> brother ©   (07.07.15 18:09) [7]

Можно, и так тоже храню. Назначение у типов разное.


 
Игорь Шевченко ©   (2015-07-07 21:45) [9]


> Это нужно для построения универсального индекса.


Я сильно извиняюсь, а что, в одном индексе могут быть значения разных типов вперемешку ? Например, строки и double ?


 
Дмитрий С ©   (2015-07-07 23:07) [10]


> Я сильно извиняюсь, а что, в одном индексе могут быть значения
> разных типов вперемешку ?

В моем случае да. Все значения для индексирования представлены массивом байт.


 
Игорь Шевченко ©   (2015-07-08 10:25) [11]


> Все значения для индексирования представлены массивом байт.


В случае разработки "универсальных индексов" индексируемые значения приводятся к единому сравнибельному виду. И вот в этом виде уже участвуют в сравнении.



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

Форум: "Начинающим";
Текущий архив: 2017.03.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.002 c
2-1436574544
Платинум
2015-07-11 03:29
2017.03.19
Посчитать 32-bit CRC


2-1435930281
Степанов Михаил В.
2015-07-03 16:31
2017.03.19
Ошибка структуры БД


15-1458927964
эндсоувот
2016-03-25 20:46
2017.03.19
???


1-1348636173
Дмитрий Белькевич
2012-09-26 09:09
2017.03.19
Как включить scroollbars у TShellTreeView?


2-1436797835
Wadimkas
2015-07-13 17:30
2017.03.19
Не пойму в чем проблема Array and Char





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский