我试图使用adodb将我的.NET项目中的一些双值保存到MS Access.如果我有未初始化的值,我想将Double.MinValue作为默认值保存到我的访问数据库中.
问题是.NET和Access中的范围不同.例如,对于.NET,minvalue是
-1.79769313486232e308
对于MS Access,minvalue是
-1.79769313486231E308
任何人都可以告诉我为什么会有差异,因为两者都使用8个字节...或者我的问题是否有任何解决方法.我想确保我的用户能够使用全系列的Double.因为他们不会知道他们"不被允许"使用Double.MinValue ......
提前感谢您的帮助!
(请注意,这个原始答案是基于问题的前提,即 .NET 和 Access 中可用的最小 Double 值之间存在差异。正如问题所有者的其他答案所述,这实际上是不正确的。)
我的猜测是,这种差异只是一个模糊的实现细节。VBA/VB6 代码库比 .NET 代码库古老得多,构建 VBA/VB6 的人可能有
0.00000000000001
的精度压缩到范围内,或者Double
被缩小了那么一点点。软件设计有时需要权衡,所以最后一个可能0.00000000000001
是为了其他好处而牺牲的。真正的答案可能会消失在时间的迷雾中。
编辑回复:其他答案中的陈述
似乎不可能通过sql语句发送Double.MinValue来访问。
虽然可能无法通过简单地调用来创建包含字符串文字的 SQL 语句,但此代码确实有效(使用 Access 2010 数据库进行测试):Double.MinValue
.ToString()
using (var cmd = new OleDbCommand())
{
cmd.Connection = con;
cmd.CommandText = "INSERT INTO DoubleTest (DoubleField) VALUES (?)";
cmd.Parameters.AddWithValue("?", Double.MinValue);
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
405 次 |
最近记录: |