Метрическое и имперское внутреннее представительство - PullRequest
2 голосов
/ 30 ноября 2010

Я хочу использовать метрические и имперские единицы измерения в приложении.Один из способов сделать это - пометить число с помощью устройства.Я не хочу идти по этому пути.

Я хочу использовать одно внутреннее представление, которое может точно удерживать имперские размеры до 1/64 дюйма и 0,2 мм.Я придумала 8128 RSU (действительно маленьких единиц), которые делятся на 64 и 254. Это делает то, что я хочу.

Это близко к 2 ^ 13, и у меня возникает вопрос, есть либолее оптимальный способ сделать это?

Есть идеи?

Ответы [ 3 ]

1 голос
/ 30 ноября 2010

Несколько более простым решением может быть использование «Других небольших блоков», чтобы 1 OSU = 1/320 мм.При таком соглашении 1/64 "будет 127 OSU и 0,2 мм будет 64 OSU. Поскольку 127 и 64 являются относительными простыми числами, это самый низкий знаменатель, который вы можете получить.

1 голос
/ 26 мая 2011

Пробежался по этим вопросам и ответам в поисках чего-то другого (как перейти от числа с плавающей точкой к префиксу метрической единицы) и подумал, что я бы поделился одной реализацией, которую я видел.* ' PADS Layout - это программа компоновки печатной платы (PCB), которая может работать в трех масштабах: дюймах, миллиметрах и милях (1 мил = 0,001 дюйма), последняя из которых является одной изСтандартные измерения в США.Это бизнес, в котором неточность из-за ошибки округления с плавающей запятой приводит к дефектным или непригодным для использования продуктам.

Для внутреннего представления координат они используют так называемые «базовые» единицы, которые составляют точно 2/3 нм.Таким образом, в миллиметре есть 1,5e6 базовых единиц, а в миллионах - 38100.Это позволяет им представлять расстояния 0,01 тысячных дюйма или 10 нанометров как целое число этих «базовых» единиц (381 и 15 соответственно).Используя 32-разрядные целые числа для координат, рабочая область составляет чуть более 112 дюймов (2,86 м) по каждой оси.

0 голосов
/ 30 ноября 2010

Во избежание ошибок округления и путаницы при программировании, я советую использовать внутри одного устройства.Таким образом, вы можете выполнить преобразование снаружи:

  • gui
  • import / export
  • возможно, база данных, но лучше оставить это внутреннему блоку, если вы не вынужденыработать с этой базой данных.

Раньше несколько проектов терпели неудачу из-за путаницы блоков.

...