首页 > 解决方案 > 从 .NET Entity Framework 添加时,0.3 在 SQL Server 中转换为 0.300000011920929

问题描述

我在 SQL Server 中有一个表,其中有一个 datatype 列float。我编写了一个用于插入记录的存储过程,它还接受参数为float.

但是 Entity Framework 使用 datatype 生成了该方法double。因此,当我从我的 .NET 客户端添加 0.3 时,它会更改为 0.300000011920929 但是我需要添加我添加的确切值,即 0.3。

任何想法如何解决这一问题?

谢谢。

标签: .netsql-serverentity-frameworknumeric

解决方案


在 SQL 中,与在其他语言中一样,float数据类型不能用于存储精确的以10为底的十进制值,因为 afloat并不总是具有精确的表示形式(https://blog.greglow.com/2018/01/15/sql-newbie -mistake-1-using-float-instead-decimal/)。尝试改用decimal数据类型,它在 SQL 中旨在精确存储十进制值。

另请参阅浮点数学是否损坏?


推荐阅读