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