我正在使用C#和SQL 2005。 我已将值 0.2 的 float 变量存储到真实类型的表格列中。 当我打开表来检查值时,我发现值为0.200000029 ...已知问题,实际是近似类型。 但是,我已使用management studio将值更改为0.2并重新加载表。数据库现在显示的值为0.2。
问题出在C#和SQL之间。是否可以从SQL管理工作室存储来自C#的值?我想是的,但不知道如何。
有人可以帮忙吗? 非常感谢。
托马斯
答案 0 :(得分:4)
如果您存储.2并且想要仅返回.2,请使用decimal
数据类型。 SQL Server中的float
值是实际的IEEE float
值,这意味着您可以在字段中使用NaN值。使用这些值执行任何操作都会导致语句崩溃。除非您知道自己确实需要float
值,否则最好不要使用decimal
。
要直接回答你的问题,你看到的.200000 .... 029只是浮点值的本质。
答案 1 :(得分:0)
正如所指出的,你所看到的是浮点数如何以二进制形式存储的副作用。
对于0.2f,精确表示为0.20000000298023223876953125
请参阅Jon Skeet的文章,了解有关如何推导出来的更多信息和代码: