C#到SQL浮点值转换

时间:2010-01-27 15:15:03

标签: c# sql floating-point precision

我正在使用C#和SQL 2005。 我已将值 0.2 float 变量存储到真实类型的表格列中。 当我打开表来检查值时,我发现值为0.200000029 ...已知问题,实际是近似类型。 但是,我已使用management studio将值更改为0.2并重新加载表。数据库现在显示的值为0.2。

问题出在C#和SQL之间。是否可以从SQL管理工作室存储来自C#的值?我想是的,但不知道如何。

有人可以帮忙吗? 非常感谢。

托马斯

2 个答案:

答案 0 :(得分:4)

如果您存储.2并且想要仅返回.2,请使用decimal数据类型。 SQL Server中的float值是实际的IEEE float值,这意味着您可以在字段中使用NaN值。使用这些值执行任何操作都会导致语句崩溃。除非您知道自己确实需要float值,否则最好不要使用decimal

要直接回答你的问题,你看到的.200000 .... 029只是浮点值的本质。

答案 1 :(得分:0)

正如所指出的,你所看到的是浮点数如何以二进制形式存储的副作用。

对于0.2f,精确表示为0.20000000298023223876953125

请参阅Jon Skeet的文章,了解有关如何推导出来的更多信息和代码:

http://www.yoda.arachsys.com/csharp/floatingpoint.html