anonymous@RULINUX.NET~# | Last login: 2024-11-05 13:26:16 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Development | [RSS] |
Граждане, а не могли бы вы накидать мне ссылков на алгоритмы округления типа double до произвольного знака после запятой?
А то тут наткнулся на реализацию подобной функции, которая выглядит как явный баг, но доказать не могу (тем более что ошибка в пределах эпсилона, но её там могло бы не быть).
anonymous(*) (2012-03-15 23:57:40)
|
|
|
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.snprintf(buf, len, "%0.2f", in) + sscanf(buf, "%f", &out); |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Алгоритм давай, в котором сомневаешься. Ну и насколько платформеннонезависимым должен быть |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.http://stackoverflow.com/questions/798046/digit-limitation-from-decimal-point-in-c |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Десятичного, с двоичным-то всё просто |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Меня больше интересует алгоритмическая сторона вопроса |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Алгоритм дать не могу - проприетарщина, выпасут - выебут. |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Выбрать пример с floor и 0.5 |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Если проприетарщина, предлагаю домножать на нужное кол-во нулей, а все остальное после запятой дропать или я не понял вопроса ? anonymous(*)(2012-03-16 00:20:29)
Mozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 Iceweasel/10.0.2 |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Да проблема в том что нужно как-то обосновать что текущая имплементация говно, остальное пускай девелоперы думают чо как фиксить. Алгоритм там не совсем такой как ты описываешь - поэтому и пытаюсь найти чего-нить похожее чтобы понять зачем так вообще делали |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.int(a*(10^n)) / double(10^n) |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.хм умножаешь на 10^(нужное количество знаков), добавляешь 0,5 если нужно округлить, а не просто отбросить лишние цифры, отбрасываешь дробную часть и потом делишь на то же 10^(нужное количество знаков), вроде всё очевидно. Типа того bugmaker(*)(2012-03-16 04:08:24)
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.> Алгоритм дать не могу - проприетарщина
|
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.> b = trunc (a * 1000.0 + 0.5) / 1000.0;
|
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.> С каких это пор алгоритмы являются проприетарщиной? На них вроде даже патенты в нормальных странах не дают. Чего скрывать?
|
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.Мущщина, ебанитесь! Любой корпорац делает это. |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.> Через trunc - это правильнее, производительнее, точнее или что?
bugmaker(*)(2012-03-17 05:35:05)
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Уже не срочно.Вобщем и месяца не прошло как разобрались - код там и правда непростой. Дело в том что вышеприведённые варианты округления не для всех чисел одинаково хорошию Есть такие значения, что не помещаются в разрядной сетке мантиссы и поэтому double их обрубает c уменьшением абсолютного значения. Вот например 0.85 округлённое по твоим формулам до тысячных, после округления станет несколько меньше: А это не годится например при интенсивном накоплении суммы вычислений в которых используется округление, ошибка ведь будет накапливаться. Приходится извращаться. |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Уже не срочно.Это вообще-то не имеет ничего с округлением. Как насчёт такого? где же тут округление? Это просто последствия хранения в виде floating point. Если нужны точные вычисления, в приличных языках для этого есть другие средства, например rationalp bugmaker(*)(2012-04-14 10:29:43)
Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 |
Скрыть
Re:Округление double то нужного кол-ва знаков после запятой. Уже не срочно.> где же тут округление? Странный ты - выбросил обе операции округления, которые сам же и советовал, и спрашиваешь где они :) |
|
|
|
Этот тред читают 7 пользователей: |
Анонимных: 7 Зарегистрированных: 0 |
Re:Округление double то нужного кол-ва знаков после запятой. Срочно.
Знака двоичного или десятичного?