小编Sam*_*kin的帖子

从.NET sqlcommand传递给SQL的值不正确

为什么当我运行下面的代码,它应该在表中插入值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()
Run Code Online (Sandbox Code Playgroud)

.net vb.net sql-server stored-procedures sql-server-2008-r2

3
推荐指数
1
解决办法
442
查看次数