|
|
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
не могу найти на форуме. но проблема старая и я был уверен что давно решенная Oracle 11.2.0.3.0 64 bit ситуация следующая. есть средних размеров таблица. начиная с определенного момента запрос вида Код: sql 1. стал выдавать следующие данные: Код: plaintext 1. 2. 3. с чем связан этот баг в целом понятно - особенности хранения вещественных чисел. вопрос в другом, как с этим бороться? получается что ни в одном запросе нельзя использовать суммирование без округления? результат не гарантирован. или архитектурно прописывать всегда точность хранения.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:02 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
bigkerс чем связан этот баг в целом понятноЗаблуждаешься. RTFM set numwidth, DUMP, TO_CHAR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:09 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
bigker, Странно, у меня вот так например: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:46 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
MaximaXXLСтранно, у меня вот так например:А надо так: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:55 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Как раз на тему "всегда ли определять Number?" http://www.sql.ru/forum/1264000-1/vsegda-li-opredelyat-number ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 11:09 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Ну вобщем я понимаю так - то что я не вижу знака в 37 разряде после запятой - не значит что его там нет. и нужно было озаботиться округлением (trunc) самому. либо при записи данных, либо при суммировании. Все вокруг сплошной обман =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 11:49 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
bigkerНу вобщем я понимаю так - то что я не вижу знака в 37 разряде после запятой - не значит что его там нет. и нужно было озаботиться округлением Озаботиться нужно заданием необходимых масштаба и точности для поля с типом данных NUMBER, а не вбиванием костылей в виде округления и усечение имеющихся данных. И, да (поскольку структура таблицы не показана) - избегать применения машинных числовых типов (binary_float & binary_double) если требуется фиксированная точность вычислений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 12:00 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
bigkerНу вобщем я понимаю так - то что я не вижу знака в 37 разряде после запятой - не значит что его там нет.Да. bigkerокруглением (trunc)Ты уж определись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 12:01 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
молчать и слушать, молчать и слуизбегать применения машинных числовых типов (binary_float & binary_double)Ни один из этих типов не может дать наблюдаемой здесь точности (погрешности) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 12:03 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Elicмолчать и слушать, молчать и слуизбегать применения машинных числовых типов (binary_float & binary_double)Ни один из этих типов не может дать наблюдаемой здесь точности (погрешности) Даже binary_double легко дает гораздо большую погрешность: Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 12:52 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousгораздо большую погрешностьпредлагаю задуматься над словом "наблюдаемой", сравнить порядок погрешности и исходной величины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:17 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
-2-andrey_anonymousгораздо большую погрешностьпредлагаю задуматься над словом "наблюдаемой", сравнить порядок погрешности и исходной величины. Раскройте пожалуйста свою мысль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:21 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousРаскройте пожалуйста свою мысль.Сперва ты: ты мне возражал или же подтверждал мой тезис своим примером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:26 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous-2-пропущено... предлагаю задуматься над словом "наблюдаемой", сравнить порядок погрешности и исходной величины. Раскройте пожалуйста свою мысль.Между 10 1 и 10 -38 требуется точность 40 значащих цифр. binary_double дает до 18 десятичных знаков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:27 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
-2-andrey_anonymousпропущено... Раскройте пожалуйста свою мысль.Между 10 1 и 10 -38 требуется точность 40 значащих цифр. binary_double дает до 18 десятичных знаков. И что из этого следует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:34 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
bigkerне могу найти на форуме. но проблема старая и я был уверен что давно решенная Oracle 11.2.0.3.0 64 bit пропущено... с чем связан этот баг в целом понятно - особенности хранения вещественных чисел. вопрос в другом, как с этим бороться? получается что ни в одном запросе нельзя использовать суммирование без округления? результат не гарантирован. или архитектурно прописывать всегда точность хранения.... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. По логике, после вычисления надо округлять. Могут не сойтись условия a-b=0, либо минус между множествами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:50 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
kernAМогут не сойтись условия a-b=0. * имелось ввиду значения из одной колонки, сгруппированные по определённому признаку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:53 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous-2-пропущено... Между 10 1 и 10 -38 требуется точность 40 значащих цифр. binary_double дает до 18 десятичных знаков. И что из этого следует? следует то, что некорректно сравнивать граничные number и binary_float, в первый влазит намного больше "информации" - значащих цифр, разница между ними будет всегда проблема же автора скорее из отряда того, что у него клиенские double/float (а это очень распостраненная практика - преобразовывать number, который base100 разновидность BCD в типы IEEE на клиенте, ибо там других типов нет) пишутся в базу данных без специальной коррекции, в результате он наступает на проблему http://0.30000000000000004.com/ и тут ему только в trunc()/round(), ну и в dump() для полного просвещения, сама же СУБД тут абсолютно ни при чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 15:01 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchandrey_anonymousпропущено... И что из этого следует? следует то, что некорректно сравнивать граничные number и binary_float :) Фикус немного в другом. number в oracle имеет не только десятичную мантиссу, но и, что более важно, десятичный порядок. Числа, представленные в IEEE-754, имеют двоичный порядок. И тут наступает смешная штука - множества представимых чисел в этих представлениях тупо не совпадают . И чем больше порядок - тем больше расстояние между представимыми числами, и, следовательно, больше абсолютная погрешность. В итоге, сохраняя IEEE-754 (а они бывают 32, 64, и 80 бит) во вроде бы более точный number, получаем по факту потерю точности, поскольку в number не всегда возможно представить значение double. Потому и ввели в 12с binary_double и binary_float, чтобы классические приложения могли хранить данные без преобразования и не "наступать". И в этой связи мне показался слегка странным данный тут совет избегать этих типов. Если что - устриц ел, в смысле - приходилось как-то плотно заниматься "самопальным" преобразованиями из IEEE-754 в number и обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 16:22 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchпропущено... следует то, что некорректно сравнивать граничные number и binary_float :) Фикус немного в другом. number в oracle имеет не только десятичную мантиссу, но и, что более важно, десятичный порядок. Числа, представленные в IEEE-754, имеют двоичный порядок. не совсем десятичный, там base100. но с натяжкой ок, можно считать десятичным :) http://www.orafaq.com/wiki/Number#Internal_storage andrey_anonymousИ тут наступает смешная штука - множества представимых чисел в этих представлениях тупо не совпадают . И чем больше порядок - тем больше расстояние между представимыми числами, и, следовательно, больше абсолютная погрешность. В итоге, сохраняя IEEE-754 (а они бывают 32, 64, и 80 бит) во вроде бы более точный number, получаем по факту потерю точности, поскольку в number не всегда возможно представить значение double. а не наоборот ??? andrey_anonymousПотому и ввели в 12с binary_double и binary_float, чтобы классические приложения могли хранить данные без преобразования и не "наступать". сомнительно, ИМХО это было скорее для вопроса перфоманса. andrey_anonymousИ в этой связи мне показался слегка странным данный тут совет избегать этих типов.\ Oracle в подавляющем большинстве случаев используется для подсчета и хранения денег, а использование там нативного double вообще говоря преступление с т.з. бухгалтерий всяких (если у тебя нет библиотеки для "нормализации" копеек после умножений и делений). в IBM вообще есть целая библиотека для "правильного" подсчета денег https://github.com/libdfp/libdfp даром что ей никто не пользуется (в Java и .NET тоже есть имплементации, тоже непопулярные). andrey_anonymous Если что - устриц ел, в смысле - приходилось как-то плотно заниматься "самопальным" преобразованиями из IEEE-754 в number и обратно. да нет там никаких устриц, задача для начального уровня. я с ней столкнулся практически на второй неделе после того, как вообще начал работать программистом - мне принесли два отчета где цифры Итого не сходились. странно, что неофиты до сих пор наступают на такие грабли, и никто не решил проблему системно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 16:39 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchне совсем десятичный, там base100. но с натяжкой ок, можно считать десятичным :) Сам когда-то так полагал (и вроде даже писал на этом форуме). Но там чистый BCD. Если конвертировать по-байтно - то да, удобно в сторичной считать. Однако в контексте беседы это вообще не имеет значения. dbpatchandrey_anonymousИ тут наступает смешная штука - множества представимых чисел в этих представлениях тупо не совпадают . И чем больше порядок - тем больше расстояние между представимыми числами, и, следовательно, больше абсолютная погрешность. В итоге, сохраняя IEEE-754 (а они бывают 32, 64, и 80 бит) во вроде бы более точный number, получаем по факту потерю точности, поскольку в number не всегда возможно представить значение double. а не наоборот ??? Что конкретно наоборот? Расстояние между представимыми числами, точность или невозможность представить IEEE-754 в number? dbpatchandrey_anonymousПотому и ввели в 12с binary_double и binary_float, чтобы классические приложения могли хранить данные без преобразования и не "наступать". сомнительно, ИМХО это было скорее для вопроса перфоманса. Что-то я сомневаюсь относительно заметного "перформанс гаин" :) dbpatchстранно, что неофиты до сих пор наступают на такие грабли, и никто не решил проблему системно Так нет тут "системной проблемы", потому и не решают. Всего лишь особенности машинных вычислений, которые по идее должны преподаваться на профильных курсах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 17:06 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Вот более "чистая" иллюстрация несовпадения представимых множеств IEEE-754 и number: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Как видно и примера, само по себе десятичное 1.000000000000001 представимо в number, но не представимо в double, хотя и делает вид, что представимо :) Ближайшее к 1.000000000000001 представимое в double - это '3FF0000000000005', однако это НЕ 1.000000000000001 и при конвертации double->number получаем ближайшее представимое в number - 1.0000000000000011 Одновременно иллюстрация про точность. Как видим, суммирование в number дает корректный результат. Однако суммирование в double идет с потерей точности, поскольку мантиссы в 6.5 байт для представления суммы не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 18:07 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchне совсем десятичный, там base100. но с натяжкой ок, можно считать десятичным :) Сам когда-то так полагал (и вроде даже писал на этом форуме). Но там чистый BCD. ой да ладно. base100 это и разновидность BCD, но если мы говорим про IBM варианты, то .... блин, да нет понятия чистый BCD https://en.wikipedia.org/wiki/Binary-coded_decimal andrey_anonymousdbpatchа не наоборот ??? Что конкретно наоборот? Расстояние между представимыми числами, точность или невозможность представить IEEE-754 в number? всякий IEEE-754 можно представить как number, но не наоборот. ты говорил что как раз не всякий IEEE-754 можно в number, что не есть научно andrey_anonymousdbpatchстранно, что неофиты до сих пор наступают на такие грабли, и никто не решил проблему системно Так нет тут "системной проблемы", потому и не решают. Всего лишь особенности машинных вычислений, которые по идее должны преподаваться на профильных курсах. это не техническая системная проблема, а проблема организационная. практически все актуальные языки программирования имеют реализацию Money/Currency или подобного, от Fixed pointer до BCD вариаций, но этим никто не пользуются, все почему-то считают деньги через double, который без специальных библиотек можно использовать лишь для инженерных/научных расчетов, но никак не для бухгалтерий есть даже специальный вид консалтинга - приходят и начинают код "линтать", на предмет некорректного использования double (первым делом ищут операторы деления и умножения, находят практически каждый раз в новом коде) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 18:28 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchandrey_anonymousпропущено... Сам когда-то так полагал (и вроде даже писал на этом форуме). Но там чистый BCD. ой да ладно. base100 это и разновидность BCD Ну покажи вариант BCD, который нельзя назвать "BASE 100" :) dbpatchвсякий IEEE-754 можно представить как number, но не наоборот. Неправда ваша. Пример - выше :) Что до научности - то независимо от системы счисления множество вещественных чисел нельзя представить ни в одном из машинных представлений уже просто ввиду перечислимости представимых множеств. Из первого попавшегося можно почитать здесь: http://www.softelectro.ru/ieee754.html 7.4 Точность представления вещественных чисел в формате IEEE754 А в обсуждаемом случае имеем ошибку преобразования из одного представления в другое просто ввиду несовпадения множеств представимых чисел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 18:39 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchпропущено... ой да ладно. base100 это и разновидность BCD Ну покажи вариант BCD, который нельзя назвать "BASE 100" :) Я дал ссылку на википедию, все описанные там варианты BCD - не base 100. andrey_anonymousdbpatchвсякий IEEE-754 можно представить как number, но не наоборот. Неправда ваша. Пример - выше :) какой такой пример? с power? ну так power для double выдает искаженный результат, но это не означает, что существует какое-то представимое в double число, которое нельзя воткнуть в number без потери значимых цифр. или еще раз - число, в студию, которое можно присвоить в double, но нельзя такое-же число получить в number без искажений :) andrey_anonymousЧто до научности - то независимо от системы счисления множество вещественных чисел нельзя представить ни в одном из машинных представлений уже просто ввиду перечислимости представимых множеств. Из первого попавшегося можно почитать здесь: http://www.softelectro.ru/ieee754.html 7.4 Точность представления вещественных чисел в формате IEEE754 А в обсуждаемом случае имеем ошибку преобразования из одного представления в другое просто ввиду несовпадения множеств представимых чисел. вот жеж блин :\ где я говорил, что бесконечное множество вещественных чисел можно представить в number? число 0.3(3), как результат 1/3 нельзя представить ни в double, ни в number, без потери точности, это и ежу понятно, речь же была про другое, про то, что не всякий double можно в number - я к этому утверждению (ложному) и придрался говоря проще - я утверждал (вернее предпологаю), что все конечное множество числел double можно поместить в множество number. вот и прошу опровергнуть оное, примерами непомещаемых чисел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 18:53 |
|
||
|
вы думаете что 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 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchесли вон то число взять как угол в радианах, да в последнюю пятерку заменить на 6, какое уголовое отконение даст это в масштабах нашей Галактики (берем катеты равными диаметру Галактики, насколько изменится гипотенуза?) Угловое - 1e-56 радиана Гипотенуза - прирастет примерно на 9,4607304725808E-23 мм, а что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 02:13 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchесли вон то число взять как угол в радианах, да в последнюю пятерку заменить на 6, какое уголовое отконение даст это в масштабах нашей Галактики (берем катеты равными диаметру Галактики, насколько изменится гипотенуза?) Угловое - 1e-56 радиана Гипотенуза - прирастет примерно на 9,4607304725808E-23 мм, а что? а, ну да, 9.5E-23 мм на масштабе Галактики - это нет, не астрономическая величина, конечно же нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 02:51 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchа, ну да, 9.5E-23 мм на масштабе Галактики - это нет, не астрономическая величина, конечно же нет :) А какое отношение 9.5E-23, которое легко представимо в number, имеет к double порядка .1 , которое нельзя точно представить в number в контексте дискуссии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 02:55 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchа, ну да, 9.5E-23 мм на масштабе Галактики - это нет, не астрономическая величина, конечно же нет :) А какое отношение 9.5E-23, которое легко представимо в number, имеет к double порядка .1 , которое нельзя точно представить в number в контексте дискуссии? как говорилось выше - тут сыр бор зашел о возможности использовать double для бухгалтерско-финансовых данных. мы (я и коллеги) в бытность делали практическое исследование (и даже методом брутфорса и формально), все везде вмещалось но проверить астрономические величины мы не могли (это заняло бы миллиарды триллионов лет), с тех пор я и забыл про эту особенность, в святой наивности полагая, что number это superset double (знаков-то больше влазит) оказалось что не прав в части астрономической величины мантиссы и вот похоже да, каких-то немыслимо мелких дробных, за что уже три раза покаялся. но моя неправота к бухгалтериям не имеет применения, так что.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 03:49 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchно моя неправота к бухгалтериям не имеет применения, так что.... Если нужна управляемая точность используй BigDecimal. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 07:56 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchandrey_anonymousпропущено... А какое отношение 9.5E-23, которое легко представимо в number, имеет к double порядка .1 , которое нельзя точно представить в number в контексте дискуссии? как говорилось выше - тут сыр бор зашел о возможности использовать double для бухгалтерско-финансовых данных. мы (я и коллеги) в бытность делали практическое исследование (и даже методом брутфорса и формально), все везде вмещалось Вопрос с double - совсем не про "вмещается"/"не вмещается". Применительно к бухгалтерии "стреляет" не сама ошибка представления десятичных чисел в double. dbpatchоказалось что не прав в части астрономической величины мантиссы и вот похоже да, каких-то немыслимо мелких дробных, за что уже три раза покаялся. .1<= x <=.2 - это "немыслимо мелкое"? Ну-ну. ...что до бухгалтерий - вопрос не в double, вопрос в квалификации программистов, этот double использующих. На самом деле можно, но с велосипедом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 10:33 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевdbpatchно моя неправота к бухгалтериям не имеет применения, так что.... Если нужна управляемая точность используй BigDecimal. :) решение довольно "упоротое", если честно. я сам больше склоняюсь (в теории) к варианту fixed pointer, от int64 (или int128), где соглашение весьма просто - integer задает число копеек (или десятитысячных копеек, в случае цены). библиотека для финансовых вычислений (на том-же C++) делается на 1-2-3, скорость наибольшая на практике же так и используется который год тот самый double с поправкой округлений на операциях умножить и разделить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 10:56 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchя сам больше склоняюсь (в теории) к варианту fixed pointer, от int64 (или int128), где соглашение весьма просто - integer задает число копеек (или десятитысячных копеек, в случае цены). В IEEE-754-2008 появился decimal. Скоро во всех утюгах планеты! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 11:03 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchя сам больше склоняюсь (в теории) к варианту fixed pointer, от int64 (или int128), где соглашение весьма просто - integer задает число копеек (или десятитысячных копеек, в случае цены). В IEEE-754-2008 появился decimal. Скоро во всех утюгах планеты! :) это вот этот который? https://en.wikipedia.org/wiki/Decimal_floating_point не взлетит. его даже к GNU C толком привинтить не смогли (в документации есть, по факту просто так скомпилировать не получится). кроме того, нативная реализация там только лишь на некоторых IBM pSeries, zSeries (не только лишь не все), в остальных случаях натужная софтовая реализация аля Number (который, впрочем, аппаратно могут тоже, не только лишь не все). в этом варианте правильно считать финансы в Integer-ах как копейки выглядит перспективнее, осталось только нативного int128 дождаться (в x64 там все мрачно, через два 64-х битных числа все сделано на ассемблере) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 13:52 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchэто вот этот который? https://en.wikipedia.org/wiki/Decimal_floating_point не взлетит. его даже к GNU C толком привинтить не смогли (в документации есть, по факту просто так скомпилировать не получится). https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-intel-extensions-qintel-extensions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:27 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchэто вот этот который? https://en.wikipedia.org/wiki/Decimal_floating_point не взлетит. его даже к GNU C толком привинтить не смогли (в документации есть, по факту просто так скомпилировать не получится). https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-intel-extensions-qintel-extensions ерунда это все, аппаратной поддержки нет, они лишь подключают софтварную библиотеку https://software.intel.com/en-us/articles/intel-decimal-floating-point-math-library по поводу поддержки этого Decimal и вовсе анекдот - в clang задавали вопрос, нужен ли он. никто за годы ни разу не обратился за поддержкой http://releases.llvm.org/3.8.1/tools/docs/UsersManual.html#gcc-extensions-not-implemented-yet а в gcc его похоже IBM самолично впливала, ей зачем-то было нужно, так этим практически никто похоже не пользуется так что насчет всех пылесосов я бы не зарекался :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:44 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchаппаратной поддержки нет, они лишь подключают софтварную библиотеку Как только интел разродится железякой - так сразу и появится во всех утюгах. Подозреваю, что дело вообще может ограничиться микрокодом. А случится это, как только интел увидит возможность поднять денег на массовой адаптации бухгалтерского ПО под decimal :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:47 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchаппаратной поддержки нет, они лишь подключают софтварную библиотеку Как только интел разродится железякой - так сразу и появится во всех утюгах. Подозреваю, что дело вообще может ограничиться микрокодом. А случится это, как только интел увидит возможность поднять денег на массовой адаптации бухгалтерского ПО под decimal :) микрокодом там точно не ограничится, не тот уровень (банально - слишком много кода, хотя они могут реализовать лишь базовые +-*/, всякие аркатангенсы навечно оставить в софте) а реализовывать все в кремне аля x87 - бесцельное удорожание и прочий рост тепловыделений да и старые процессоры куда девать? в общем мертворожденное это все, яж говорю - не взлетит. кроме того, никто из девелоперов не хочет это использовать - 95% оных не читало даже https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html только только научились кое-как копейки в double считать, и тут опять переучиваться? да, ссылку выше даже я не прочитал, не дочитал и до пятой части, забросил, слишком скучно и непонятно для "бухгалтера" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 15:09 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchа реализовывать все в кремне аля x87 - бесцельное удорожание и прочий рост тепловыделений На минуточку x87 годы назад тупо перебрался под общую крышку с CPU, потому для просто поддержки формата и расчетов с ним все что надо - добавить десятичный порядок. Куда старые процессоры девать? Да как обычно - на помойку, уж сколько поколений сменилось - и то лишь в случае, если современные FPU не позволяет решить задачу работы с десятичным порядком на уровне микрокода... Те же P6/P7 ведь микрокодом обошлись, не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 15:19 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchа реализовывать все в кремне аля x87 - бесцельное удорожание и прочий рост тепловыделений На минуточку x87 годы назад тупо перебрался под общую крышку с CPU, потому для просто поддержки формата и расчетов с ним все что надо - добавить десятичный порядок. Куда старые процессоры девать? Да как обычно - на помойку, уж сколько поколений сменилось - и то лишь в случае, если современные FPU не позволяет решить задачу работы с десятичным порядком на уровне микрокода... Те же P6/P7 ведь микрокодом обошлись, не? P7 как говорит википедия - это Итаник. но если речь про P6 + Netburst то они померли естественным путем в связи с массовым переходом на x64 даже при всех очевидных бенефитах x64 для сервера - процесс помирания был очень долгим, растянулся на лет так 14 минимум и до сих пор еще не закончился (RHEL 5/6 x32 все еще саппортится) в остальном же все печально - линкеры по дефолту компилируют в очень ограниченный сабсет x64 команд (хотя нужно отдать должное, туда по умолчанию много чего включено, тот-же SSE2), а вот всякие новые фишки вроде AVX или CRC (_mm_crc32_u64 интринзик) - это лишь удел отдельно взятых функций, которые на старте проверяют поколение процессора и подсовывают или себя или софтовый "универсальный" аналог а теперь представь себе ситуацию с базовым числовым типом - как это будет выглядеть? всякие инлайнинги отпадают как класс (ты не заменишь их на старте), т.е. только прыжки в библиотеки даже для суммирования, а это опять ТООООРМОЗА, в сравнении. кому это вообще будет надо? т.е. в массы это все никак не пойдет. а микрокод процессора не умеет прыгать сам в userspace библиотеки, там или всё, или ничего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 15:32 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchа теперь представь себе ситуацию с базовым числовым типом - как это будет выглядеть? Да так и будет - одна сборка для ущербных, другая - для "продвинутых". Ведь сегодня никого не удивляет 5-6 сборок любого современного продукта под различные платформы, верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 15:41 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchа теперь представь себе ситуацию с базовым числовым типом - как это будет выглядеть? Да так и будет - одна сборка для ущербных, другая - для "продвинутых". Ведь сегодня никого не удивляет 5-6 сборок любого современного продукта под различные платформы, верно? под платформы - пока не удивляет, хотя тенденция на тотальную замену всех этих монстров из 90-х и 00-х на x64 она вовсю шурует по планете (терабайты оперативки на x64 уже никого не удивляют, кому еще нужны эти big-endian - загадка, вон даже линукс окончательно оказывается от поддержки big-endian power) но decimal number - это не тот случай, чтоб под него отдельную сборку делать для разработчика это двойной pain - мало просто собрать, этож еще и тесты надо отдельно прогнать, а оно ему надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 15:45 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchдля разработчика это двойной pain - мало просто собрать, этож еще и тесты надо отдельно прогнать, а оно ему надо? Надо конечно. Некоторые IT-манагеры до сих пор мечтательно закатывают глаза, вспоминая, сколько распилили освоили на решении "проблемы 2000", которая яйца выеденного не стоила. А тут вообще золотая жила из серии (для тех, кто помнит arvid и первые цифровые видеоформаты) "Прорыв года! Наконец-то фидошники научились использовать видеокассеты для хранения видеофильмов!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 15:57 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchдля разработчика это двойной pain - мало просто собрать, этож еще и тесты надо отдельно прогнать, а оно ему надо? Надо конечно. Некоторые IT-манагеры до сих пор мечтательно закатывают глаза, вспоминая, сколько распилили освоили на решении "проблемы 2000", которая яйца выеденного не стоила. А тут вообще золотая жила из серии (для тех, кто помнит arvid и первые цифровые видеоформаты) "Прорыв года! Наконец-то фидошники научились использовать видеокассеты для хранения видеофильмов!" ой да ладно, ArVid отмер раньше, чем качественные .avi появились. а манегеры - они вон как-то не сильно на M7 по причине нативного number переходят, так что мимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 16:06 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchой да ладно, ArVid отмер раньше, чем качественные .avi появились. А это не важно. Важен факт: Видеокассеты. Стало. Возможно. Использовать. Для. Хранения. Видео. 754-2008: Числа. С. Плавающей. Точкой. Теперь. Можно. Использовать. Для. Десятичных. Вычислений. dbpatchа манегеры - они вон как-то не сильно на M7 по причине нативного number переходят, так что мимо. Это потому что маркетологи ленивые пошли. Волна пойдет - нормально все будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 16:11 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous754-2008: Числа. С. Плавающей. Точкой. Теперь. Можно. Использовать. Для. Десятичных. Вычислений. ты это сначала манагеру донеси, что для того, чтоб считать дебет и кредит всенепременно нужно что-то, отличное от double если сразу не уволят "за несоотвествие" - расскажешь, чем все закончилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 16:15 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
dbpatchсначала манагеру донеси, что для того, чтоб считать дебет и кредит всенепременно нужно что-то, отличное от double Неправильно ты, дядя Федор, бутерброд ешь. Манагеру глубоко фиолетово на double и даже на triple. Манагеру дай денег заработать. А тотальная замена железа - это же золотое дно. Кароч, когда интел расчехлится - вангую новую инкарнацию "проблемы 2000 года", что-то вроде "проблемы приблизительности точных вычислений". Эксперты статеек тиснут много новых, вендоры HW отрапортуют о новой супе-пупер-платформе, которая "считает точно", вендоры всяких аксапт срочно выпустят "advanced" версию продукта... Индустрии давно не хватает драйва. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 16:21 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousdbpatchсначала манагеру донеси, что для того, чтоб считать дебет и кредит всенепременно нужно что-то, отличное от double Неправильно ты, дядя Федор, бутерброд ешь. Манагеру глубоко фиолетово на double и даже на triple. Манагеру дай денег заработать. А тотальная замена железа - это же золотое дно. Кароч, когда интел расчехлится - вангую новую инкарнацию "проблемы 2000 года", что-то вроде "проблемы приблизительности точных вычислений". Эксперты статеек тиснут много новых, вендоры HW отрапортуют о новой супе-пупер-платформе, которая "считает точно", вендоры всяких аксапт срочно выпустят "advanced" версию продукта... Индустрии давно не хватает драйва. так уже тискали, толку с того? манагеру нужно пояснить финдиректору, зачем нужен мульен денег. с x64 это было просто - "у нас так много данных, что в память не вмещается". а пояснить "нам нужен новый способ что правильно копейки считать" - вызовет лишь хохот в наблюдательном совете, типо "блин, а что, мы все эти годы как-то неправильно деньги считали? иди иди, шутка не удалась". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 16:51 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
adukaмолчать и слушать, молчать и слу, 1/2 4 =0,0625 - 3 значащие цифры Нет. Вы слишком узко смотрите. 1/2 1 +1/2 4 =0,5+0,0625=0,5625 - таки 4 значащие цифры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 07:59 |
|
||
|
вы думаете что 1+(-1) = 0? а вот и нет
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousЭто потому что маркетологи ленивые пошли. Просто эта проблема никому не интересна. Возьмем родной интеловский формат чисел с плавающей запятой (80 бит). Аппаратно реализован, точнее. Но на него все забили практически с рождения. Потому как привычка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 08:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1885657]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
115ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 560ms |

| 0 / 0 |
