Форум: "Начинающим";
Текущий архив: 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