在我们的程序,我们目前生活与传统的一个决定要储存的所有工程数据,在我们数据库中。

我担心我们可能没有足够的精确度和精确度在我们的数据库或中。净数字类型。我也担心,我们可以看到文物的浮点的数学(尽管这可能是一个问题都以本身)。

例如,来源数据的可能是压力数量表(并阅读,在一些3rd方服务)在Psi(磅每平方英寸)。该工程师将具有选择这个单位的措施,因为(用的数量表示的),这往往会得到容易消化、人可读的数字,而不需要科学符号。

当我们的'统一'数,即当我们把这个数量,为我们自己的毅力,我们可以将其转换为Pa(帕斯卡),这将需要乘以或除以数通过其他一些潜在的大的数字。

我们往往最终储存非常大或者非常小的数字,并且更糟-我们可以做进一步的计算这些数字。

现在,我们使用ORACLE浮体和系统。一倍。

什么人认为这个?

更新

进一步的研究已经出土 度量单位的支持 在即将举行的F#语言(在CTP为我写)。

似乎我们就可以有F#了解用户输入,例如:

9.81<n/s^2> // an acceleration

我们还将能够创造我们自己的衍生的单元和单元的系统。

creating a derived unit for Newtons in F#
(资料来源: msdn.com)

有帮助吗?

解决方案

显著数字记 - 测量的准确性。如果PSI是已知的唯一的整个磅,然后转换到帕后有15位小数,仍然只有一个显著图。

精密距离精度不同,并且执行浮在工程单位点运算所需要的操作过程中考虑到这一点 - 不存储比所述测量的精度更高的精度,在计算比不使用更精确是已知的。


编辑:

您还可以考虑使用NUMERIC(p,s)其中精度(位数)和规模(数字小数点右边的数字),可以显式指定。

如果这不是一种选择,考虑迁延特定测量精度,以便它可以被报告和/或在计算中使用。

其他提示

我觉得只要你能够准确地储存尽可能多的精度你确实有,你没有理由担心。

使用你给转换PSI的到帕斯卡的示例(1个PSI = 6 894.75 PA),如果我要进行测量的说14.7 PSI,并将其转换为帕斯卡我得到101,352.825。太过分了精度。你需要存储为101000反映的测量的,不是的计算的。

的实际精度

请在任何数字你所使用的转换需要至少与您的测量那样精确,所以你不会在转换过程中丢失精度的头脑。最好在转换因子有更多的精确度(至少一个)的数字比你的测量结果。

我认为工程数据通常是不够精确担心差。你知道工程师的表达“用千分尺测量,用粉笔标记它,切断与斧头”。这大约概括起来。担心在计算上是建立在现实世界中,以2显著数字宽容只是没有意义的东西8级显著人物或12之间的区别。

要避免精度损失是由于单元转换,可以存储来自在于它是在所测量的单位测量的所有数据。当然,这意味着你可能最终与被存储在帕一定的压力值,其他以psi,或甚至毫米汞柱。你必须决定自己是否该引入更多的问题比它解决的。

和我同意其他的答案:在大多数情况下,由一个Oracle浮子提供的精度远小于测量本身的精度更高的

嗯,这取决于你想如何准确是。记住不是谈论工程的时候,它是不够的,只是存储数3.20,因为3.2是不一样的3.20,当涉及到工程。 3.20比3.2意味着更高的精度,这可能是 3.15 <= X <3.25

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top