【发布时间】:2014-06-09 15:59:31
【问题描述】:
我有以下情况:
我创建了一个 C# 方法,该方法在 SQL Server 数据库表中执行插入查询。在这种方法中,我有类似的东西:
// [Severity] insertion on the DB:
if (v.Severity != null)
{
_strSQL += ",[Severity] ";
strSQLParametri += ", @SEVERITY ";
_addParameter(command, "@SEVERITY", v.Severity);
}
Severity 是表格列,v.Severity 是我必须为新行放入该列的值。
在表格中,Severity 列定义为float
我的问题是,如果v.Severity 的值类似于3.7,它将在Severity 列中执行3.7 值,但如果它类似于3.0,则将3 而不是@987654333 @
我该怎么做才能让3.0 而不是3 进入我的Severity 列?
【问题讨论】:
-
3和3.0是同一个数字,只是显示方式不同。您需要更改显示数据的方式以显示3.0而不是3。 -
它也与 3.00、3.000 等相同。同样,3.7 与 3.70、3.700 等相同。一个精确的浮点值可以有任意数量的尾随零。仅当它是科学测量时才重要(因此有效数字很重要),在这种情况下,您会将精度存储在不同的列中。
-
更具体地说,@BradleyDotNET 评论:
3.7与3.700000047683716相同,因为0.7不能用 2 的幂精确表示,这与0.5不同。查看h-schmidt.net/FloatConverter/IEEE754.html 了解它是如何工作的。 -
float是严重性选择错误的数据类型。我建议改为int。
标签: c# sql sql-server database rdbms