【发布时间】:2013-04-25 13:28:06
【问题描述】:
为什么当我运行下面的代码时,应该在表中插入一个值 122387593.6,它会插入一个值 122387593.59999999?
我跟踪了 .net 的调用,可以看到该值作为 122387593.59999999 传递给 SQL,但在调试时参数值返回为 122387593.6?!
我无法弄清楚 .NET 为什么会这样做 - 非常感谢任何帮助。
---SQL Code
CREATE TABLE [dbo].[tblNum](
[Num] [numeric](28, 8) NOT NULL
) ON [PRIMARY]
CREATE PROCEDURE spNumInsert (@Num numeric(28,8))
AS
BEGIN
INSERT INTO tblNum VALUES(@Num)
END
GO
--.NET Code
Dim a = Double.Parse("122387593.6", Globalization.CultureInfo.InvariantCulture)
Dim con As SqlConnection = New SqlConnection("Server=server;Database=database;Trusted_Connection=True;")
Dim com As SqlCommand = New SqlCommand("spNumInsert", con)
com.CommandType = CommandType.StoredProcedure
com.Parameters.Add(New SqlParameter("@Num", a))
con.Open()
com.ExecuteNonQuery()
con.Close()
con.Dispose()
【问题讨论】:
标签: .net sql-server vb.net stored-procedures sql-server-2008-r2