В нашем приложении мы в настоящее время живем с наследием решения хранить все инженерные данные в нашей базе данных в SI.В каких единицах измерения вы будете хранить технические данные?
Я опасаюсь, что мы можем рискнуть не иметь достаточной точности и точности в нашей базе данных или в числовых типах .NET. Я также обеспокоен тем, что мы можем видеть артефакты математики с плавающей запятой (хотя это, вероятно, вопрос для всех).
Например, исходные данные, возможно, были выражены (и считаны с некоторыми услугами сторонних производителей) в Psi (фунты на квадратный дюйм). Инженеры выбрали эту единицу измерения, потому что (для выражаемого количества) это будет иметь тенденцию давать легко усваиваемые, читаемые человеком числа, не требуя научной нотации.
Когда мы «стандартизируем» число, т. Е. Когда мы преобразуем эту величину для нашей собственной стойкости, мы можем преобразовать ее в Pa (Pascals), которая потребует либо умножения, либо деления числа на какое-либо другое потенциально большое число.
Мы часто заканчиваем хранение очень больших или очень маленьких чисел, и еще хуже - мы можем делать дальнейшие вычисления на этих числах.
В настоящее время мы используем ORACLE float и System.Double.
Что люди думают об этом?
UPDATE
Дальнейшие исследования обнаружили Units of Measure support в предстоящем F # языке (в CTP, как я пишу).
Кажется, мы будем иметь возможность F # понимать ввод пользователя, такие как:
9.81<n/s^2> // an acceleration
Мы также сможем создать наши собственные производные единицы и единицы системы.
-1: Это, безусловно, может иметь значение при использовании в повторных расчетах. Конечно, это будет зависеть от проблемной области, но небольшие ошибки имеют совокупный аффект с течением времени. – 2008-12-05 13:09:30
@ Ken G, вы, очевидно, не понимаете точности. – 2008-12-05 13:11:59
+1, потому что вы правы: если измерение имеет относительную погрешность в 1%, любая накопленная ошибка требует большого накопления, чтобы стать больше, чем это. – Treb 2008-12-05 13:16:58