我正在使用LINQtoSQL映射器和LINQ,以便将值插入我的数据库(SQL Server 2008 R2)。我的应用程序中有3层,当我在插入新行时跟踪我的应用程序时,一切顺利。但在检查我的数据库后,float类型的一个字段的值会发生变化。例如,当我插入12.69时,在数据库中的值为12.6899995803833。我完全糊涂了,不知道该怎么做。非常感谢。
答案 0 :(得分:2)
如果您希望输入的值(在基数10中)准确表示,您可能希望在SQL Server中使用decimal
和在SQL Server中使用DECIMAL(p,s)
。
C#中的float
和double
类型(以及SQL Server中的REAL
和FLOAT
)是二进制(基数2),并不能准确表示许多小数值。当然,十进制仍然具有有限的精度(在C#中修复,以及您在SQL Server中指定的内容)。
答案 1 :(得分:-1)
这听起来像是一个问题,您可以更精确地从一种类型更改为另一种类型。