2009-12-18 23 views
2

是否将sql数据类型钱映射到c#float?确实有钱地图漂浮好吗?

+0

另外mrblah你有一个非常高的点数。在发布这样的问题之前谷歌甚至搜索这个相同的确切问题。它已被问了数百次。 – JonH 2009-12-18 19:42:03

+0

@JonH:一定要在SO上搜索。但它从来没有打算在Google之后成为你的第二选择。这个网站是专门设计,使谷歌搜索不必要的。给人们一个值得信赖的网站来获得答案,而不是依靠Google向我们指出数百个不同和不可靠的网站。 – jalf 2009-12-18 19:48:31

+0

@jalf - 我的观点是搜索是必要的,而不是发布一个简单的问题。除此之外,如果你在谷歌搜索,结果会在这里指出你的相当大的机会。如果你处于编码的中间,并且你需要一些真正快速的东西,那么使用谷歌搜索就没有任何问题。 – JonH 2009-12-18 20:07:11

回答

12

不......它映射到decimal。如果该列允许为空,则映射到Nullable<Decimal>

Mapping CLR Parameter Data

float不够精确用于货币计算。你会在所有地方失去/获得金钱。

+1

只有当列允许空值时 - 否则,它直接映射到十进制。 – 2009-12-18 19:36:09

+0

@Reed - 感谢您的澄清。领先于我自己。适当更新。 – 2009-12-18 19:37:19

+0

为什么它没有显示答案被编辑? – CSharpAtl 2009-12-18 19:37:58

2

我会使用十进制。

十进制值类型表示 十进制数范围从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335。 十进制值类型适用于需要 的大量重要积分 和小数位数和不舍入 错误的财务计算 。十进制类型不包括 消除了四舍五入的需要。 相反,它最大限度地减少了由于 四舍五入造成的错误。

0

编号

货币映射到Decimal。如果MONEY列允许空值,则它将映射到Nullable<Decimal>.。有关详细信息,请参见SQL-CLR Type Mapping

浮点数不够精确,无法用于处理货币的数值计算。您应该始终使用十进制值进行所有计算。

0

不,float精度太低,无法处理货币价值。七位数字不会让你走得很远。由于数字的表示方式,浮点类型也容易出现舍入误差。使用Decimal数据类型。

2

只有当你想赔钱。

+3

snark +1,无可替代-1。 – Will 2009-12-18 19:38:11