不,那个
System.Decimal
与sqlite 8字节整数(-9223372036854775808::9223372036854775808::9223372036854775807)相比,类型具有更广泛的值范围(-79228162514264337593543950335::792281625164337593543950335),并且需要比sqlite real更高的精度。(
IEEE-754
)可以提供。
从
http://www.sqlite.org/datatype3.html
:
具有数字相关性的列可以
包含使用全部五个存储的值
课程。插入文本数据时
在数字列中,存储
文本的类转换为
整数或实数(按
优先权)如果这种转换是
无损且可逆。为了
文本和实数之间的转换
存储类,sqlite考虑
转换为无损和
如果前15个显著
数字的小数位数为
保存。如果无损转换
文本转换为整数或实数不是
可能,然后存储该值
使用文本存储类。不
试图转换空值或
Blob值。
一根绳子可能看起来像
带小数的浮点文字
点和/或指数符号,但作为
只要该值可以表示为
一个整数,数值关联将
将其转换为整数。因此,
字符串“3.0e+5”存储在列中
以数字相似性为整数
300000,不是作为浮点数
价值300000.0。
如果你比较
-7.92281625142644e+28
到
-79,228,162,514,264,337,593,543,950,335
,您将看到浮点值已四舍五入为一个超出System.Decimal可存储范围的值(-792281625142644000000000000)。您的ADO.NET提供程序正在尽其所能地做最好的工作,但是由于数据转换,它无法工作。如果您真的需要存储System.Decimal的整个范围,那么您将不得不将其存储为文本,并让自己无法在sqlite中对值进行操作。