|
|
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
RoundTo(0.175,-2)=0.17 RoundTo(0.275,-2)=0.28 непонятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:10:14 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
sgec , а что тут непонятного? при "пополамных" вариантах округление происходит в сторону ближайшего чётного числа, и так было всегда. F1This method rounds to an even number in the case that AValue is not nearer to either value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:13:44 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
щас понял ага ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:17:01 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
x77 sgec , а что тут непонятного? при "пополамных" вариантах округление происходит в сторону ближайшего чётного числа, и так было всегда. это пацанам на vcl5 расскажите ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:48:12 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Альтэто пацанам на vcl5 расскажите ;) в смысле? Код: plaintext ответ - 2,4. это и в семёрке также работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:53:25 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
x77Альтэто пацанам на vcl5 расскажите ;) в смысле? Код: plaintext ответ - 2,4. это и в семёрке также работает. а в пятерке нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:54:35 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Альт , не знал.... о_О ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:57:38 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
x77 Альт , не знал.... о_О я до прошлого года тоже z_Z ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 16:59:34 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
sgecRoundTo(0.175,-2)=0.17 RoundTo(0.275,-2)=0.28 непонятно У тебя не 0,175, а что то близкое к 0,174999999999 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 17:09:01 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
что-то теперь мне стало нифига непонятно... Anatoly Podgoretsky , RoundTo (0.175, -2) = 0.17. фахт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 17:19:35 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Я тебе верю и более того толкаю тебя верить. Утверждение 1 - округление происходит в сторону ближайшего чётного числа Утверждение верное, и поскольку его не происходит, то у тебя не 0.175, а немного меньше, а вот 0.275 строго посредине и округление идет в сторону четного Утверждение 2 - операция RoundTo не работает с текстами. Значит текст 0.175 надо преобразовать в число, с какой ни будь точностью (Single/Double/Extended), при преобразовании в ч число происходит ошибка представления, поскольку число 0.175 невозможно представить точно, а только приблизительно, или чуть больше или чуть меньше. По результату видно, что чуть меньше. Утверждение 3 - если результат куда либо присваивается, то происходит опять же потеря точности, если только это не степень 2 и достаточно маленькое, как например 0.175 Дополнение 1 - все работает правильно поскольку нет присвоения результата функции и ты просто фантазируешь!!! Также нет проверки отношения - вывод тот же. Дополнение 2 - или ты приводишь нормальный текст (не только присвоение), или говорить не о чем. Дополнение 2 - ты ничего не читал и не знаешь об особенностях чисел с плавающей запятой. -- http://www.podgoretsky.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 17:32:09 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Дополнение 4 - округление до не целого числа, это фикция, в результате то получается не круглое число. -- http://www.podgoretsky.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 17:33:19 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Anatoly Podgoretsky , всё это интересно и познавательно, но: Код: plaintext 1. 2. 3. 4. 5. результат всегда будет 0.17 для любого вещественого типа (дельфийского). мне кажется - что должно быть 0.18. я пока себе это объяснить не могу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 18:55:26 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Ты не обяснить не можешь, а понять, хотя тебе все расписали. -- http://www.podgoretsky.com Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 20:09:02 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Anatoly Podgoretsky, увы, не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 20:13:02 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Я худею, дорогая редакция!!! Код: plaintext 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. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 21:03:29 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
x77> мне кажется - что должно быть 0.18. Нет. Хотя тут могут быть разные точки зрения. x77> я пока себе это объяснить не могу :) Подумай над определением понятия "четность". zirra > Я худею, дорогая редакция!!! С чего конкретно ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 22:39:34 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустамzirra > Я худею, дорогая редакция!!! С чего конкретно ?Ну, хотя бы с того, что при изменении SetRoundMode меняется результат присвоения переменных... Соответственно, и результат округления разный... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 22:49:48 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
zirra> при изменении SetRoundMode меняется результат присвоения переменных... Нет. zirra> Соответственно, и результат округления разный... Вот я и говорю - шо удивляет-то? :) Меня с ходу немного озадачил только второй результат - пока я не полистал наверх и не увидел при каких условиях он был получен. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 23:14:49 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам zirra> при изменении SetRoundMode меняется результат присвоения переменных... Нет. zirra> Соответственно, и результат округления разный... Вот я и говорю - шо удивляет-то? :) Меня с ходу немного озадачил только второй результат - пока я не полистал наверх и не увидел при каких условиях он был получен. А четвёртый - не удивил?.. %))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 23:21:58 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Нет. Я после второго весь код прочитал. :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 23:32:42 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамЯ после второго весь код прочитал. :) Издеваиссе?.. Какой в гузку - КОД?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 00:28:07 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Что-то Анатолий рано спать лег. Точное представление десятичных дробей в двоичной форме - его любимая тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 00:36:14 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
NextManЧто-то Анатолий рано спать лег. Точное представление десятичных дробей в двоичной форме - его любимая тема. Вообще-то, да... Кстати, надысь была ж тема на эту тему... %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 00:38:35 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Я не сплю, я со стороны смотрю. Я все сказал, можно было бы еще и на Королевство послать и послал бы, но тут вопрос за пределами тех статей, тут не понимание, как работает компилятор. Почему A := 0.2 и константа 0,2 это разные числа, я уже сказал, но что делать если нет понимания с той стороны. -- http://www.podgoretsky.com Что-то Анатолий рано спать лег. Точное представление десятичных дробей в двоичной форме - его любимая тема. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:07:45 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
zirraГаджимурадов Рустамzirra > Я худею, дорогая редакция!!! С чего конкретно ?Ну, хотя бы с того, что при изменении SetRoundMode меняется результат присвоения переменных... Соответственно, и результат округления разный... Ну на основания вывода я не стал бы делать вывод об присвоение, тут надо смотреть на представление в отладчике и с максимальной точностью. Кроме того обычно переменные типа Double, а это вводит дополнительные погрешности при обработке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:13:02 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Anatoly Podgoretskyне понимание, как работает компилятор. Почему A := 0.2 и константа 0,2 это разные числа я не понимаю чисто логически. потому что если 0.175 - это, видите-ли, не 0.175, а неведомо что - то в топку такие компиляторы. до меня этот voodoo-magic не доходит. если кто-то понимает - ну слава богу. а меня как-то больше пугают такие приколы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:13:17 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
x77... я не понимаю чисто логически. потому что если 0.175 - это, видите-ли, не 0.175, а неведомо что - то в топку такие компиляторы. до меня этот voodoo-magic не доходит... А при чем тут компиляторы? Ну, скажи сам, как представить в двоичной форме (Float) 0.175? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:22:50 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Вообще то это не к компилятором относится, а к математике Дискретные числа ограниченой точности. Тебя же не смущает, что ты не можешь разделить точно 1 на 3? Какая бы точность не была. Допустим, что число не периодическая дробь, а точное число, только для точного представления нужно допустим 300 бит, а в наличии только 32/64/80 -- http://www.podgoretsky.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:24:15 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Anatoly Podgoretsky Я не сплю, я со стороны смотрю. Я все сказал, можно было бы еще и на Королевство послать и послал бы, но тут вопрос за пределами тех статей, тут не понимание, как работает компилятор. Почему A := 0.2 и константа 0,2 это разные числа, я уже сказал, но что делать если нет понимания с той стороны. -- http://www.podgoretsky.com Что-то Анатолий рано спать лег. Точное представление десятичных дробей в двоичной форме - его любимая тема. "Гараж"- Занимаюсь сатирой. - Русской или иностранной? - Нашей. - По девятнадцатому веку? - Нет, современной. - Хм! У вас потрясающая профессия! Вы занимаетесь тем, чего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 01:36:31 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
NextMan , Anatoly Podgoretsky , вы хотите сказать, что дробные величины в дельфи хранятся, как частное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 02:11:15 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
А вы не хотите самостоятельно разобраться? Это совсем не сложно - вспомни школьный курс про номальное представление чисел, про "мантиссу" и "порядок". Тут то же самое, только мантисса и порядок ограничены фиксированным числом бит. Иногда хватает точности, а иногда нет. Типа, 0.25 есть "два в минус второй степени" - значащее число всего два бита мантисса отлично помещается в двух битах ( даже в одном! - если спихуть все на порядок). А вот 0.15 точно представить нельзя. Ну, 0.125 (два в минус третьей) + 0.015625 (два в минус шестой) + 0,0078125 (два в минус седьмой) + 0,0009765625 (два в минус десятой) + ... и т.д., давай дальше сам Надеюсь, понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 02:35:55 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Ну вот здесь вроде понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 02:38:13 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Шедевральный топик! Люблю такие темы - столько перлов можно услышать :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 03:21:43 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
NextManНу вот здесь вроде понятно. а как же тогда быть с округлением, как тогда правильно округлять (получать из 0.175 0.18) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 10:06:47 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
попробовать ftCurrency ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 10:14:38 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Альта в пятерке нет а вот и да ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 10:16:35 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
NextMan, читаю... что-то такое смутно вспоминается... ))))))))))))))))))))))))))))), при чём тут математика? речь о представлении данных в эвм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 11:07:43 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
andreymx, Currency - это всего-навсего целый тип (64 бита), значение 1 принято считать за 0,0001 в десятичном исполнении. Т.е., там нет описанных "проблем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 11:14:24 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
NextManandreymx, Currency - это всего-навсего целый тип (64 бита), значение 1 принято считать за 0,0001 в десятичном исполнении. Т.е., там нет описанных "проблем". только RoundTo его (Currency) преобразует к double со всеми вытекующими ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2008, 11:17:09 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Помогите, пожалуйста, разобраться. Я понял, что некоторые дроби невозможно точно представить в двоичном виде, и 0.175 это 0.17499999999999. Но вот пример прямо из справки Делфи: Код: pascal 1. 2. 3. 4. 5. Пишу: Код: pascal 1. Получаю результат 1.25. А должно быть 1.24, согласно примеру из справки. В справке ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 13:02:59 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 13:12:02 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
zinpub, спасибо. Но я это сразу попробовал. В справке сказано: "With the default rounding mode (rmNearest), if X is exactly halfway between two whole numbers, the result is always the even number.". Ок. Делаем: Код: pascal 1. 2. 3. 4. 5. Результат: 1.25 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 13:20:22 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Я уже все таблицами исписал. Это правило прекрасно работает, если округляем до целых: 1.5 = 2 2.5 = 2 3.5 = 4 4.5 = 4 И т.д. С округлением до десятых, сотых и т.д. - случайный результат. Где-то округляется в большую сторону, где-то в меньшую. Причем у функции RoundTo(V,-2) и у функции FloatToStr(V,3,4) - порой разный результат округления. Пример: RoundTo(1.55,-1) = 1.5 FloatToStr(1.55,2,4) = '1.6E+0000' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 13:26:56 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Федор_Федор, Можно ещё посмотреть в сторону Set8087CW, но там с 32/64 разница есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 13:40:09 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Федор_Федор, для школьного округления надо использовать SimpleRoundTo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 13:43:37 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
zinpub, Ок. Спасибо. С ней пока не разбирался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 14:36:29 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
JaDi, Спасибо. Я обычно мудрил что-то вроде Round(V*n)/n, где n - номер цифры после запятой, которую надо округлить. Все работает отлично. Но недавно обнаружил, что есть RoundTo. Она вроде удобнее (писанины меньше), но работает непредсказуемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 14:41:32 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Федор_Федор, Она работает предсказуемо -- это называется банковское округление (округление к ближайшему четному числу). Используется для того, чтобы у бахгалтеров ошибка округления не накапливалась при большом количестве записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 15:04:57 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
JaDi, Тут вся ветка о банковском округлении, но все равно спасибо, что напомнили :-) Непредсказуемо - это значит не в соответствии ни с правилами "банковского" округления, ни в соответствии с правилами "школьного" округления. Примеры - выше в теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 17:14:36 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 17:35:30 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 17:37:14 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
Не знал, что всё настолько плохо в стандартных функциях О_о Результаты получены на Delphi 7 при режиме округления по умолчанию (rmNearest). Результаты тестирования при других режимах приведены в приложении, но безошибочного поведения согласно какого-либо алгоритма достигнуть так и не удалось. Вообще, результат RoundTo лишь в 50% случаев округления пятерки совпадает с правилом банковского округления. Статистическая погрешность подавляется отвратительно — набегает 13 руб. 45 коп разницы на миллионе записей. Еще меньше похожа ее подружка SimpleRoundTo на обещанное арифметическое округление — менее 40% совпадений, все ошибки в одну сторону (см. результаты тестов в приложении). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 17:50:21 |
|
||
|
Округление RoundTo. Непонятно :)
|
|||
|---|---|---|---|
|
#18+
JaDi, да, пичалька... Но, надо сказать, я проверял в 2015 году на В7Дшеу(вот не помню версию), было на порядок лучше, но странные места встречались(процентов 10, на 100млн умножений) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 22:53:42 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2041678]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 493ms |

| 0 / 0 |
