|
|
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchчисло 0.3(3), как результат 1/3 нельзя представить ни в double, ни в number, без потери точности, это и ежу понятно Зато 1/3 легко представить в системе счисления по основанию 3 точно также, как 1/7 - в системе счисления по основанию 7, 1/10 - в системе счисления по основанию 10. Так понятнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 18:58 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousНу покажи вариант BCD, который нельзя назвать "BASE 100" :) base100 это просто конкретный алгоритм и формат представления чисел в виде последовательности байт, а не некое понятие "по основанию 100" https://amitzil.wordpress.com/2015/03/24/how-are-numbers-saved-in-oracle/ и этот BASE1000 алгоритм подобен BCD алгоритмам IBM, которые делают то или иное кодирование/декодирование и представление в виде байт, но, строго говоря, никогда официально как BCD не назывался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 18:59 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchчисло 0.3(3), как результат 1/3 нельзя представить ни в double, ни в number, без потери точности, это и ежу понятно Зато 1/3 легко представить в системе счисления по основанию 3 точно также, как 1/7 - в системе счисления по основанию 7, 1/10 - в системе счисления по основанию 10. Так понятнее? нет, не понятее, как это все основание по 3 относится к теме double vs number понятное дело, что будь у нас не 10 пальцев, а, допустим, 16, то мы бы использовали систему счисления по основанию 16 (некоторые древние народы даже 60-ричные системы умудрялись использовать), но это уже совсем офтопик и не отвечает на мой вопрос: какое такое впихуемое в double нельзя впихнуть в number? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 19:03 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchandrey_anonymousпропущено... Зато 1/3 легко представить в системе счисления по основанию 3 точно также, как 1/7 - в системе счисления по основанию 7, 1/10 - в системе счисления по основанию 10. Так понятнее? нет, не понятее, как это все основание по 3 относится к теме double vs number Пример я приводил выше. Основания степени для вещественных имеют непосредственное отношение к дистанции между представимыми числами. number - основание 10 double - основание 2 троичная - основание 3 В любой из этих систем счисления можно реализовать представление степени и мантиссы по аналогии с IEEE754 (кстати, в IEEE-754-2008 появились decimal). Но при этом множества представимых вещественных чисел между этими системами НЕ совпадут. 1/3 и 1/10 - просто самый очевидный пример несовпадения представимых множеств. Но 1/2 и 1/10 - тоже не совпадают. И это медицинский факт. Конкретный пример для double я привел выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 19:22 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousКонкретный пример для double я привел выше. никакого такого примера я не увидел. пример с power(2,-54) не актуален - обратное преобразование в из number дает изначальный результат: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. еще раз - речь не про выражения, сложения или вычитания и их результат, речь про конкретное число, которое или может или не может быть преобразовано из double в number без искажений такое число будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 19:41 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Elicмолчать и слушать, молчать и слуизбегать применения машинных числовых типов (binary_float & binary_double)Ни один из этих типов не может дать наблюдаемой здесь точности (погрешности)Согласен. В данном случае не к месту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 08:19 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousИ в этой связи мне показался слегка странным данный тут совет избегать этих типов. А в чем странность совета избегать хранения чисел десятичной точности в типах данных двоичной точности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 08:24 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousНо там чистый BCD. Код: plsql 1. В каком месте там BCD? Там именно base100. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 08:29 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchчисло, в студию, которое можно присвоить в double, но нельзя такое-же число получить в number без искажений :) таки их есть на свете, если быть строгими: 1/2=0,5 - 1 значащая цифра 1/2 2 =0,25 - 2 значащие цифры 1/2 3 =0,125 - 3 значащие цифры 1/2 39 и далее = ... - 39+ значащих цифр, более 38 цифр в Number-е не отразишь, приехали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 08:41 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
То есть, если длина мантиссы значения, сохраняемого в binary_double , превышает 38 бит - такое значение невозможно точно отразить во множестве допустимых значений формата Number. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 08:46 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
молчать и слушать, молчать и слу, 1/2 4 =0,0625 - 3 значащие цифры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 08:57 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatch(некоторые древние народы даже 60-ричные системы умудрялись использовать), но это уже совсем офтопик и не отвечает на мой вопрос: какое такое впихуемое в double нельзя впихнуть в number? Некоторые и по сей день минуты и секунды в ней считают. :) Что касается IEEE-754, то наверное далеко ходить не надо: Код: plsql 1. Хотя нонче, не то что давеча . :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 09:51 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
молчать и слушать, молчать и слуТо есть, если длина мантиссы значения, сохраняемого в binary_double , превышает 38 бит - такое значение невозможно точно отразить во множестве допустимых значений формата Number. Невозможно, если длина мантиссы превышает 50 бит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 10:11 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
aduka, да что вы к мантиссе то привязались: Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 10:17 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 10:27 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевaduka, да что вы к мантиссе то привязались: Код: plsql 1. 2. ок, про мантиссу принято, бревна в глазу я не заметил. хотя диапазон чисел более 1.0E126 и менее 1.0E-130 вызывает сильные сомнения практического применения, но это уже нытье лузера, ни разу не спорт ;) долго же вы держались... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:39 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
молчать и слушать, молчать и слуdbpatchчисло, в студию, которое можно присвоить в double, но нельзя такое-же число получить в number без искажений :) таки их есть на свете, если быть строгими: 1/2=0,5 - 1 значащая цифра 1/2 2 =0,25 - 2 значащие цифры 1/2 3 =0,125 - 3 значащие цифры 1/2 39 и далее = ... - 39+ значащих цифр, более 38 цифр в Number-е не отразишь, приехали :) так их и в Double не отразишь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:40 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
молчать и слушать, молчать и слуandrey_anonymousНо там чистый BCD. Код: plsql 1. В каком месте там BCD? Там именно base100. base 100 относится к семейству BCD. BCD форматов существует масса разновидностей, абсолютно между собой не совместимых. у них только одно общее - они все кодируют десятичные цифры, а не двоичные, все остальное - произвольно (форматы и алгоритмы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:42 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchмолчать и слушать, молчать и слупропущено... таки их есть на свете, если быть строгими: 1/2=0,5 - 1 значащая цифра 1/2 2 =0,25 - 2 значащие цифры 1/2 3 =0,125 - 3 значащие цифры 1/2 39 и далее = ... - 39+ значащих цифр, более 38 цифр в Number-е не отразишь, приехали :) так их и в Double не отразишь :) Число 2 130 = 1024 13 > 1000 13 = 10 39 имеет более 39 значащих цифр и не может быть представлено в Number. В двоичном представлении оно имеет только 1 значащую цифру, и поэтому должно представляться в Double точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:06 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
adukadbpatchпропущено... так их и в Double не отразишь :) Число 2 130 = 1024 13 > 1000 13 = 10 39 имеет более 39 значащих цифр и не может быть представлено в Number. В двоичном представлении оно имеет только 1 значащую цифру, и поэтому должно представляться в Double точно. ок, уделал, мое почтение! прикольно осознавать, что ты (в смысле я) сел в лужу. верификацию double vs number мы делали для финансовых данных почти лет двадцать назад (там больше 1000 триллионов величины не имеют практического смысла, если ты не в Зимбабве) на астрономические величины проверить тогда как-то не подумалось, каюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:15 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
adukaЧисло 2 130 = 1024 13 > 1000 13 = 10 39 имеет более 39 значащих цифр и не может быть представлено в Number.Не может храниться в NUMBER(38). Безразмерный NUMBER может быть до 40 значащих цифр: Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:27 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
aduka Число 2 130 = 1024 13 > 1000 13 = 10 39 имеет более 39 значащих цифр и не может быть представлено в Number. В двоичном представлении оно имеет только 1 значащую цифру, и поэтому должно представляться в Double точно. dbpatch, нет, это я ошибся. Это утверждение верно только теоретически. Решил проверить его на практике, и оказалось, что число 2 56 в Double сохраняется точно, а вот число 2 57 округляется (144115188075855870 вместо 144115188075855872). Вот такая засада с Double. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 22:15 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
adukaadukaЧисло 2 130 = 1024 13 > 1000 13 = 10 39 имеет более 39 значащих цифр и не может быть представлено в Number. В двоичном представлении оно имеет только 1 значащую цифру, и поэтому должно представляться в Double точно. dbpatch, нет, это я ошибся. Это утверждение верно только теоретически. Решил проверить его на практике, и оказалось, что число 2 56 в Double сохраняется точно, а вот число 2 57 округляется (144115188075855870 вместо 144115188075855872). Вот такая засада с Double. не важно, в любом случае мантисса в double может быть больше, чем в number, т.е. уже есть класс чисел, которые нельзя сконвертировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 23:08 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Блин, все самое интересное пропустил. Вот пример без "астрономии" (double): 3FBF9ADD3746F67D=0,12345678901234609370352046653351862914860248565673828125 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 01:35 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousБлин, все самое интересное пропустил. Вот пример без "астрономии" (double): 3FBF9ADD3746F67D= 0,12345678901234609370352046653351862914860248565673828125 диаметр Млечного Пути примерно 946073047258080000000000 миллиметров если вон то число взять как угол в радианах, да в последнюю пятерку заменить на 6, какое уголовое отконение даст это в масштабах нашей Галактики (берем катеты равными диаметру Галактики, насколько изменится гипотенуза?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 01:45 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39479766&tid=1885657]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 516ms |

| 0 / 0 |
