我正在使用LINQtoSQL映射器和LINQ将值插入到我的数据库(SQL Server 2008 R2)中。我的应用程序有3层,当我在插入新行时跟踪我的应用程序时,一切都很顺利。但在检查我的数据库后,float类型的一个字段的值会发生变化。例如当我插入12.69时,在数据库中的值是12.6899995803833。我完全困惑,不知道该怎么做。提前致谢。当插入到数据库中时浮点值发生变化
1
A
回答
-1
这听起来像是一个问题,您正在从一种类型更改为更精确的另一种类型。
+0
这个数字更可能是以不同的方式打印。 float和double都不能实际存储12.69,所以实际上最初的问题是错误的 - 作者不*将* 12.69插入到数据库中。可能作者插入的浮点数最接近12.69,这更准确地打印为12.6899995803833。 BTW,12.69f的精确值(假设一个IEEE浮点型): 12.68999958038330078125 如果谁告诉你,他们已经准确地存储在12.69二进制浮点数字是错误的。 –
1
如果您希望您输入的值(以10为底)被准确表示,那么您可能希望在SQL Server中使用decimal
(C#)和DECIMAL(p,s)
。
类型(在SQL Server和REAL
和FLOAT
)float
和double
在C#是二进制(基数为2),并不能准确地表示许多十进制值。当然,十进制仍然具有有限的精度(在C#中修复,以及您在SQL Server中指定的内容)。
相关问题
- 1. 当数据发生变化时Listview变更重点
- 2. 当MySql数据库条目发生变化时发送通知
- 3. 将浮点值插入到mysql数据库不一致性
- 4. 当数据库中的数据发生变化时更新变量
- 5. 注释ID在插入数据库之前发生变化
- 6. 如何插入浮点型变量在数据库中正确
- 7. 在将数据插入到SQLite数据库时发生异常
- 8. Asp.net当插入数据库没有发生任何插入
- 9. 当数据插入到数据库时发生数组错误时发生错误
- 10. 当数据库发生变化时,您如何管理ORM层?
- 11. 当Rails关联发生变化时更新数据库结构
- 12. 当数据库表发生变化时更新FrontEnd
- 13. 当数据库内容发生变化时启动bpm进程
- 14. 当我插入数据库时发生SqlException错误
- 15. 当我插入一个值到数据库它插入两行到数据库
- 16. Pentaho - 当值发生变化时递增
- 17. 当输入数据发生变化时,AngularJs不更新模型
- 18. 当输入参数发生变化时,tf变量不会改变数值
- 19. 每当输入值发生变化时更新DOM值
- 20. 当视图中的数据发生变化时触发查询
- 21. 当变量存储实际值时,PHP将NULL插入到MySQL数据库中
- 22. 当数据库中的表发生变化时向用户发送通知
- 23. 当Flex Spark List的数据发生变化时检测到
- 24. 当我将其插入到MySQL中时,我的代码发生了变化
- 25. 插入值到数据库
- 26. 插入值到数据库
- 27. 数据库发生变化时收到通知c#
- 28. 插入图像到mysql数据库时发生的问题
- 29. 当数值发生变化时,MySQL增加用户变量
- 30. 当点击结帐按钮时将数据插入数据库
浮点数很棘手。查看http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/特别是“不要将它存储在浮动”文章。 – Steve