我在SQL Server中有一个表,其中有一列数据类型为float
。我编写了一个用于插入记录的存储过程,它也接受参数作为float
。
但是,实体框架生成了数据类型为double
的方法。因此,当我从 .NET 客户端添加 0.3 时,它更改为 0.300000011920929,但是我需要添加我添加的确切值 0.3。
有什么想法可以解决这个问题吗?
谢谢。
在 SQL 中,与其他语言一样,float
数据类型不能用于存储精确基数的10个十进制值,因为float
并不总是具有精确的表示形式 (https://blog.greglow.com/2018/01/15/sql-newbie-mistake-1-using-float-instead-decimal/)。尝试改用decimal
数据类型,该数据类型在 SQL 中旨在精确存储十进制值。
参见 浮点数学坏了吗?