我注意到,当我x = 0.56657011973046234
在 sqlite 数据库中存储一个 double 值,然后再检索它时,我得到y = 0.56657011973046201
. 根据sqlite 规范和.NET 规范(我最初都懒得去阅读这两个规范:)这是预期的和正常的。
我的问题是,虽然高精度并不重要,但我的应用程序处理用户输入/选择代表基本 3D 信息的双精度数,然后对它们运行模拟以找到结果。并且此输入可以保存到 sqlite 数据库中,以便稍后重新加载和重新运行。
出现混淆是因为新创建的一系列输入显然会以稍微不同的方式模拟存储和重新加载后的相同输入(因为双精度值已更改)。这是合乎逻辑的,但不是可取的。
我还没有完全了解如何处理这个问题,但与此同时,我想将用户输入限制/限制为可以精确存储在 sqlite 数据库中的值。所以如果用户输入0.56657011973046234
,它实际上被转化为0.56657011973046201
。
但是,给定一个数字,我无法弄清楚数据库中将存储什么值,而实际上却无法从数据库中存储和检索它,这似乎很笨拙。有没有既定的方法来做到这一点?