roh*_*agg 4 floating-point precision units-of-measurement
在我们的应用程序中,我们目前的决定是将所有工程数据存储在SI中的数据库中.
我担心在我们的数据库或.NET数字类型中我们可能会冒不具备足够精度和准确性的风险.我也担心我们可能会看到浮点数学的假象(虽然这可能是一个问题本身).
例如,源数据可能是以Psi(磅/平方英寸)表示的压力量(并从某些第三方服务读入).工程师将选择这个度量单位,因为(对于表达的数量),这将倾向于提供易于消化的,人类可读的数字而无需科学记数法.
当我们"标准化"数字时,即当我们将这个数量转换为我们自己的持久性时,我们可能会将其转换为Pa(帕斯卡),这需要将数字乘以或除以其他可能的大数字.
我们经常最终存储非常大或非常小的数字,更糟糕的是 - 我们可能会对这些数字做进一步的计算.
目前我们使用ORACLE float和System.Double.
人们怎么想这个?
UPDATE
进一步的研究已经在即将推出的F#语言(我写的CTP中)中发现了度量单位支持.
看来我们能够让F#了解用户输入,例如:
9.81<n/s^2> // an acceleration
Run Code Online (Sandbox Code Playgroud)
我们还可以创建自己的派生单位和单位系统.

(来源:msdn.com)
记住重要数字 - 测量的准确性.如果PSI只知道整磅,那么在转换为Pa之后有15位小数,仍然只有一个有效数字.
精度与精度不同,在工程单位上执行浮点运算需要在运算期间考虑到这一点 - 不要存储比测量精度更高的精度,不要在计算中使用比已知更高的精度.
编辑:
您也可以考虑使用NUMERIC(p,s)精确度(位数)和比例(小数点右侧的位数)可以明确指定的位置.
如果这不是一个选项,请考虑保持特定测量的准确性,以便可以在计算中报告和/或使用它.