|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Выражение меняет значение при изменении последовательности его вычисления. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 12:45 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
И шо ? Правила округления в школе не проходил 14,934(9) = 14.94 все правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 12:57 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevИ шо ? Правила округления в школе не проходил 14,934(9) = 14.94 все правильно То что в школе учили, что b и с должны быть равны! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:05 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
ProteusТо что в школе учили, что b и с должны быть равны!А в институте ты машинную арифметику ограниченной точности не проходил? Не воинствуй, а включи мозг. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:16 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
ProteusВыражение меняет значение при изменении последовательности его вычисления.Для демонстрации очевидного незачем так многобуквенно излагать код. Достаточно Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:22 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Насамом деле, сначала написал не очень вежливый ответ автору, потом "включил мозг" и понял, что я тоже не знаю, как Oracle считает и как его заставить считать правильно. По правильно, я понимаю считать не в float/double, а с фиксированной точкой. Тупо поменял тип переменных в примере автора на number( 15, 5 ) и понял, что "тупо" не прокатило, а как правильно, я не знаю ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:29 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
А где в доке описывается порядок определения типов (точности) при вычислениях в PL/SQL ? сходу в И-нете не нашел ((( Код: sql 1. 2. 3. 4. 5.
В чем считать будет? В number(15,4) или в float ? Как правильно указать, что считать в number(15,4) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:37 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevПо правильно, я понимаю считать не в float/double, а с фиксированной точкой.Если в выражении нет аргументов binary_float/_double, оно считается с фиксированной точкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:38 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
-2-Leonid KudryavtsevПо правильно, я понимаю считать не в float/double, а с фиксированной точкой.Если в выражении нет аргументов binary_float/_double, оно считается с фиксированной точкой. "Все не так очевидно" ( C ) С какой фиксированной точкой? Откуда Oracle узнает требуемую точность констант. И, самое главное, как ее указать. Подозреваю, что константа 0.0725 как раз и есть binary_float. Нужно ли и как ее привести к fixed виду? p.s. возможно несу бред, просьба меня простить. Просто ткнулся вроде в очевидную вещь и понял, что не понимаю ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:43 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevПодозреваю, что константа 0.0725 как раз и есть binary_float.Если не указан суффикс, то константа имеет тип number. В sql операнды смешанных числовых выражений приводятся к типу по приоритету binary_double, binary_float, number. Вычисление выражения производится с внутренней точностью binary_double или number(40). В plsql целые числа в пределах 32х разрядов обрабатываются как pls_integer. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 14:06 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevа как правильно, я не знаю ((( Elic уже дал вполне достаточную подсказку. Собственно, программистов обычно этому учат в явном виде. Классическая тестовая задача - как подсчитать сумму некоего массива с наименьшей потерей точности. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 14:38 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
ProteusLeonid KudryavtsevИ шо ? Правила округления в школе не проходил 14,934(9) = 14.94 все правильно То что в школе учили, что b и с должны быть равны! А тебя не удивляет, что a и с равны? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 14:39 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
все сводится к двум строкам Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
в первом случае результат 30900 * 0.0725* 2 делится на 3 без остатка во втором случае результат 0.0725* 2 НЕ делится на 3 без остатка ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 14:59 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
а тут все идентично Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:01 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Всегда знал, что округление это занятно. Еще и интерфейс приложений может радости добавить. Копи-паст результат одного запроса в другой - и получи неверный ответ. Код: sql 1. 2. 3. 4. 5.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Видишь девятки? А они тут есть ------------------------------ 14,935 ROUND(14.935,2) --------------- 14,94 ROUND(0.0725*2/300*30900,2) --------------------------- 14,93 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:26 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
andrey_anonymous Меня растроило, что я почему-то наивно думал, что SQL ( PL/SLQ ) типизированный язык. И если явно указана точность, то с такой точностью он и должен считать. А, как верно ответил elic, он считает с максимальной точностью или вообще в binary_double, что IMHO как-то для типизированного языка не совсем правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:30 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevВсегда знал, что округление это занятно.Возьми паузу и сразу диссертацию напиши про деление на 3, округление округления, сумму округлений и округление суммы,... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:31 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevА, как верно ответил elic, он считает с максимальной точностью или вообще в binary_double, что IMHO как-то для типизированного языка не совсем правильно. 1. Elic отметил совсем не это. 2. Ну и какая точность у number()? 3. Приведите пожалуйста Ваше понимание " такой точностью он и должен считать" на примере этого топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:33 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevИ если явно указана точность, то с такой точностью он и должен считать. Может ли INT-параметр иметь дробную часть? - Увы... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:36 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Ответ тех.поддержки Incorrect Results Returned by ROUND Function (Doc ID 1936942.1) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 16:09 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
andrey_anonymous... Классическая тестовая задача - как подсчитать сумму некоего массива с наименьшей потерей точности. andrey_anonymous, Это интересно. на эту тему мне известно четыре захода: сортировать asc и складывать, сложение по Кахану, сложение по Ноемайеру, то, что можно было бы назвать "сложением по Кислицину" - складывать на двоичном счетчике-абаке. Какой из них вы используете хоть в каких-нибудь вычислениях, не используете никакой, или используете некий пятый метод? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 17:03 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
booby, Деление. -2- уже намекнул: "напиши про деление на 3". Вот и скажи какой из "четыре захода" определит какая точность результата деления 1 на 3. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 17:57 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
SY, Извини, это выглядит как подмена понятий. вычитание для демонстрации катастрофической потери точности ничем не хуже деления - понятнее и проще. Думаю, что про деление на 3 -2-, вероятнее всего, говорил в контексте точности представления числа 1/3 в первую очередь. Поясню - меня сейчас не интересует минимизация потери точности при произвольном вычислении. я задал более простой вопрос - касающийся "классической тестовой задачи", пытающейся минимизировать её потерю при простом сложении, существенно более стабильным в отношении скорости нарастания ошибки по отношению и к вычитанию и к делению. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 18:12 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
SY"напиши про деление на 3" не очень понятно, в чем проблема деления на 3, это всего лишь сдвиг на один разряд вправо в троичной системе счисления ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 18:21 |
|
Перемена место множителя в выражении имеет значение
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevне очень понятно, в чем проблема деления на 3, это всего лишь сдвиг на один разряд вправо в троичной системе счисленияТебе доставляет удовольствие прикидываться тупым или ты действительно? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 23:16 |
|
|
start [/forum/topic.php?fid=52&msg=39844632&tid=1882224]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 424ms |
0 / 0 |