Тут можно обсуждать об округлении координат, площадей и т.д.
Всегда мы работаем с какой-то точность, иногда мы её изменяем. Часто из-за этого получаеются несоответсвия площадей и различные результаты. Мы забываем что такое точность и что она очень сильно влияет на конечный результат. А много вообще таких кадров, которые работают в геодезии и даже курса метматики не знают! А слушать никого не хотят, говоря: "Программа и компьютер же должны посчитать точно, почему он не точно посчитал?"
Вот для таких непоняток и для просветления народа и создана эта тема.
Округлення координат і виникаючі при цьому проблеми
Re: Округление координат и возникающие с этим проблемы
Виды округлений
Стандарт IEEE 754 описывает семь методов округления чисел:
Первые пять методов являются, согласно стандарту, обязательными к реализации, а последние два - опциональными.
Тестовая выборка, однозначно различающая методы
Для определения соответствия функции, реализующей округление, некоторому стандартному методу округления удобно воспользоваться специальной тестовой выборкой чисел. Предлагаемый набор из 4 чисел позволяет однозначно различить перечисленные в стандарте семь методов округления.
Рассмотрим следующую таблицу (в предположении, что округления производились до 1 знака после запятой):
(с) По материалам http://altsoph.livejournal.com/111735.html
Стандарт IEEE 754 описывает семь методов округления чисел:
- round-down - усечение, округление по направлению к нулю,
- round-half-up - арифметическое округление (если отбрасываемые цифры больше либо равны 0.5, происходит округление вверх (от нуля), иначе цифры просто отбрасываются),
- round-half-even - банковское округление, (если отбрасываемые цифры больше 0.5, происходит округление вверх (от нуля), если меньше 0.5 - цифры отбрасываются, если отбрасываемая часть равна 0.5, то округление происходит в зависимости от четности предпоследней цифры),
- round-ceiling - округление к плюс бесконечности,
- round-floor - округление к минус бесконечности,
- round-half-down - подобно арифметическому (round-half-up), пятерка округляется вниз,
- round-up - округление от нуля.
Первые пять методов являются, согласно стандарту, обязательными к реализации, а последние два - опциональными.
Тестовая выборка, однозначно различающая методы
Для определения соответствия функции, реализующей округление, некоторому стандартному методу округления удобно воспользоваться специальной тестовой выборкой чисел. Предлагаемый набор из 4 чисел позволяет однозначно различить перечисленные в стандарте семь методов округления.
Рассмотрим следующую таблицу (в предположении, что округления производились до 1 знака после запятой):
Код: Виділити все
округления 0.35 -0.25 -0.41 -0.59
round_down 0,3 -0,2 -0,4 -0,5
round_up 0,4 -0,3 -0,5 -0,6
round_half_up 0,4 -0,3 -0,4 -0,6
round_half_even 0,4 -0,2 -0,4 -0,6
round_ceiling 0,4 -0,2 -0,4 -0,5
round_floor 0,3 -0,3 -0,5 -0,6
round_half_down 0,3 -0,2 -0,4 -0,6
(с) По материалам http://altsoph.livejournal.com/111735.html
Re: Округление координат и возникающие с этим проблемы
А яке ви використовуєте округлення? І чи будь-де використовуєте однакове?
Re: Округление координат и возникающие с этим проблемы
doslidnik писав:А яке ви використовуєте округлення? І чи будь-де використовуєте однакове?
На даний момент, ми розробили власну функцію заокруглення по типу бухгалтерського (ще називається банківським, бо саме там воно вперше почало використовуватись, round-half-even), так як він максимально підходить для роботи з площами.
Якщо цифра справа, перед якою потрібно заокруглити, менше 5, то ліва цифра не змінюється, якщо цифра справа більше 5, то ліва цифра збільшується на одиницю. Якщо цифра справа рівна 5, а ліва - парна - не змінюється, якщо ліва - не парна, то збільшується на одиницю. Також враховується друга права цифра, для компенсації.
Для кращого розуміння цього заокруглення, дивіться таблицю, де заокруглення йде до цілого числа:
Код: Виділити все
0.5 - 0
0.55 - 1
1.5 - 2
1.55 - 2
2.5 - 2
2.55 - 3
3.5 - 4
3.55 - 4
4.5 - 4
4.55 - 5
5.5 - 6
5.55 - 6
6.5 - 6
6.55 - 7
7.5 - 8
7.55 - 8
8.5 - 8
8.55 - 9
9.5 - 10
9.55 - 10
Рекомендую скачати бета-версію 6.1.4.3 і поекспериментувати. В подальшому, дане заокруглення буде, починаючи з версії 6.1.4.3. Якщо побачите якісь неточності в заокругленні, прохання висилати приклади цифр, або архіви ділянок з зауваженнями відносно заокруглення. Але покищо тести ніяких проблем не виявили.
Re: Округление координат и возникающие с этим проблемы
NickS писав:На даний момент, ми розробили власну функцію заокруглення
але вона числа чомусь округлює по різному число до 2-х знаків "4264962.7250"=4264962.72(по Вашим правилам) та "4188675.7250"=4188675.73(не по правилу).
Re: Округление координат и возникающие с этим проблемы
doslidnik писав:NickS писав:На даний момент, ми розробили власну функцію заокруглення
але вона числа чомусь округлює по різному число до 2-х знаків "4264962.7250"=4264962.72(по Вашим правилам) та "4188675.7250"=4188675.73(не по правилу).
Ще раз прочитайте моє повідомлення і уважно!
Re: Округление координат и возникающие с этим проблемы
NickS писав:На даний момент, ми розробили власну функцію заокруглення по типу бухгалтерського (ще називається банківським, бо саме там воно вперше почало використовуватись, round-half-even), так як він максимально підходить для роботи з площами.
Это ваша личное желание выбрать именно этот метод? Или на то есть законадательное объяснение
Re: Округление координат и возникающие с этим проблемы
ozkc писав:NickS писав:На даний момент, ми розробили власну функцію заокруглення по типу бухгалтерського (ще називається банківським, бо саме там воно вперше почало використовуватись, round-half-even), так як він максимально підходить для роботи з площами.
Это ваша личное желание выбрать именно этот метод? Или на то есть законадательное объяснение
Законодательного объяснения на такие вещи нету, если найдёте - пожалуйста, сообщите об этом. Но данный метод используется как раз для подсчётов площадей, потому что, при суммировании округлённых значений площадей, он компенсирует погрешность и оставляет её одинаковой, а остальные методы, при суммировании, чем большее количество слагаемых, тем больше погрешность.
Почему так, например, почитайте статью.
http://www.buhgalteria.com.ua/Hit.html?id=1985
Re: Округление координат и возникающие с этим проблемы
Наша организация столкнулась с проблемой округления координат. Дело в том, что геодезические обмеры мы считаем в программном продукте "Digitals", а он выдает координаты с точностью до 1-го миллиметра (база в Госкомземе ведется уже несколько лет с "Digitals" соответственно координаты обменных файлов до 1-го миллиметра). Картина выглядит следующим образом: участки которые мы создаем сейчас в "Digitals" садятся в ГИС6 с микро-накладками и в Госкомземе на нас незжают типа мы "притарабанили" участки с накладками (они проверяют через F7). Как с этим бороться и вообще есть ли смысл с этим бороться????
Re: Округление координат и возникающие с этим проблемы
Vaho писав:Наша организация столкнулась с проблемой округления координат. Дело в том, что геодезические обмеры мы считаем в программном продукте "Digitals", а он выдает координаты с точностью до 1-го миллиметра (база в Госкомземе ведется уже несколько лет с "Digitals" соответственно координаты обменных файлов до 1-го миллиметра). Картина выглядит следующим образом: участки которые мы создаем сейчас в "Digitals" садятся в ГИС6 с микро-накладками и в Госкомземе на нас незжают типа мы "притарабанили" участки с накладками (они проверяют через F7). Как с этим бороться и вообще есть ли смысл с этим бороться????
Проблема лишь в том, что Вы и Госкомзем не могут понять что такое округление и как с ним работать.
Если диджиталс выдаёт с точностью до 3 знаков, тогда либо и в ГИС6 и в Госкомземе нужно настроить до 3 знаков, либо после импорта физически округлять (через преобразование координат).
Представьте себе ситуацию: есть два человека, которым дают команду пройти одно и тоже расстояние, только одному говорят с точностью до метра, а второму с точностью до километра. Имеем расстояние 2450 м.
Первому человеку говорят: "Пройдите 2450 м", а второму: "Пройдите 2 км" (2450 м ≈ 2 км)
Внимание, вопрос: пройдут ли два человека одинаковое расстояние? И почему, ведь начальное условие было одинаково для всех? Кто в этом виноват и как с этим бороться?
Если и на данном примере не понятно почему такие проблемы происходят, я тогда не знаю что посоветовать.