在我的调试器(VS2010)中,我可以验证是否使用SqlCeCommand
将正确的值发送到我的SqlCeServer 3.5数据库。SqlCeServer:Float存储不正确
查看数据后,我注意到一些我的float
值是倾斜的。
当我进入
0.006
,数据库会存储0.0060000000521540642
当我进入
0.012
,数据库会存储0.0120000001043081
当我进入
0.011
,数据库会存储0.0109999999403954
其他浮点值(1.125,0.875,0.75)存储就好了。
有什么特别的我必须做以确保我的float
值存储正确吗?
好吧,所以我删除了我的数据库并重新创建它(这是我的应用程序应该做的)。这一次,我使用'SqlDbType.Decimal',而不是将'SqlCeParameter'的'SqlDbType'指定为'Single'(这是一个'float')。数据看起来不对,当我打开SQL Server Management Studio时,发现我的'SqlDbType.Decimal'参数将这些列格式化为'numeric(18,0)',并将我的值四舍五入为最接近的整数。 **如何解决这个问题?** – jp2code
@ jp2code:在'decimal(p,s)'中指定p和s:不允许它们默认。 http://technet.microsoft.com/en-us/library/system.data.sqlserverce.sqlceparameter.precision.aspx – gbn
OH YEAH!你好漂亮!而已!谢谢! – jp2code