.net - 从 .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。
任何想法如何解决这一问题?
谢谢。
解决方案
在 SQL 中,与在其他语言中一样,float
数据类型不能用于存储精确的以10为底的十进制值,因为 afloat
并不总是具有精确的表示形式(https://blog.greglow.com/2018/01/15/sql-newbie -mistake-1-using-float-instead-decimal/)。尝试改用decimal
数据类型,它在 SQL 中旨在精确存储十进制值。
另请参阅浮点数学是否损坏?
推荐阅读
- java - iReports 中可能已弃用 JDBC MySQL 驱动程序,无法导入新驱动程序
- mysql - 根据mysql中的行值动态重命名列
- file - 在参数(控制器)中获取多个文件 - Grails
- javascript - Lodash比较不同长度的对象数组
- python - 如何将 pytest 与 bazel 一起使用?
- algorithm - 鉴于 f(n) = 10000000n 和 g(n) = n^2。为什么 f(n) 是 O(g(n))?
- python - 将标签列插入数据框中的列内容
- moleculer - 分子:分割微服务通信
- c++ - 选择 Eigen 中满足条件的行
- chisel - "for-loop" 减少 Chisel3.2 上的编码