1

当您在表中使用小数或浮点数作为数据类型时,您应该做出什么决定?

4

3 回答 3

3

Afloat更小并且具有更高的性能,因此如果性能是一个问题,您可能想要使用float.

Adecimal更适合准确地表示十进制数字。Afloat以二进制形式存储数字,因此 10.2 这样的数量不能完全存储为 a float,但可以完全存储为 a decimal。如果精确的十进制表示比性能更重要,那么您应该选择decimal.

于 2013-02-21T09:30:02.040 回答
0

看看这个。这可能是你要找的。它基本上给你带来了不同。

浮点数和十进制数据类型之间的区别

于 2013-02-21T09:37:12.833 回答
0

对于整数类型,像 57 这样的值正好代表数字 57。毫无疑问,它是否真的代表了稍微大一点的东西,或者更小一点的东西。值 0 表示加法恒等式(任何值加零产生相同的值),值 1 表示乘法恒等式(任何值乘以 1 产生相同的值),任何其他正值表示 1 必须是的次数加到零达到它(例如 2 是 1+1,3 是 1+1+1 等),任何负值表示相应正值的加法逆。

对于二进制浮点类型,值不代表精确的数字。相反,除了一些标记值之外,每个浮点值都有一个数字范围,它应该被认为是最好的表示;该范围内的一个数字被认为是“标称值”。IEEE 标准要求添加两个浮点值应该产生通过添加它们的标称值产生的数字的最佳表示,但这并不意味着float其标称值恰好是 2000000.125 实际上代表了那个确切的数字数量。它可能同样可能代表计算结果(例如 20000000.0f/10.0f),其结果由该float值比任何其他值更好地表示。

尽管该Decimal类型提供比floator更高的精度double,但它的主要用途是表示精确的小数部分(例如 1.37)。该类型的语义实际上更接近于不精确类型 like 的语义,而double不是精确类型 like的语义int,因为将例如一万亿加到一个数字然后减去一万亿可能会导致一个与起始值不同的数字。如果该类型的目的是识别精确的小数部分,或者如果需要该类型可以提供的额外精度,Decimal尽管它有怪癖,但它可能是一个很好的选择。否则,如果显示为 1.37 的值确实表示一个数字,而 1.37 是最方便的表示,但实际上可能更大或更小,请键入double将更紧凑,使用起来更快。

于 2013-08-15T22:03:39.127 回答