0

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

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

任何人都可以帮忙吗?非常感谢。

托马斯

4

2 回答 2

3

如果您存储 .2 并且只想返回 .2,请使用decimal数据类型。 floatSQL Server 中的值是真正的 IEEEfloat值,这意味着您可以在字段中使用 NaN 值。对这些值执行任何操作都会导致您的语句崩溃。除非你知道你真的需要一个float值,否则你最好使用decimal.

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

于 2010-01-27T15:17:49.443 回答
0

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

对于 0.2f,精确表示为 0.20000000298023223876953125

有关如何派生的更多信息和代码,请参阅 Jon Skeet 的文章:

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

于 2010-01-27T15:59:55.753 回答