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()