sqlite - SQLite decimal(12,2) ,它实际上是如何工作的?
问题描述
我想用列小数(12,2)创建表查询意味着最多12位数字,其中2位是十进制,对吧?当我在此列上使用更新语句时,例如
“更新表集 'x' = 'x' + 0.01 其中.....”
我总是得到一个十进制后 12 位的数字。比如,0 = 0 + 0.01 结果是 0.010000000001
这对我来说不是什么大问题,但最后的 1 位数字是。我是否应该更改我的 create table 语句,因为显然 12 数字对我来说不起作用,谢谢
解决方案
您用于检索列的方法清楚地将列检索为double
. 由于没有与 对应的浮点数0.01
,因此您获得的值是四舍五入的。
检索列时,请务必使用Decimal之类的类,该类使用正确的舍入对十进制数执行操作,并将列检索为:
Round(dataReader.getDecimal(), 2);
推荐阅读
- c - 强制转换时如何将连续位域转换为变量
- excel - 需要帮助才能找到唯一的对
- html - HTML&CSS + Twitter Bootstrap:在 Angular 验证后添加错误消息
- unity3d - Endless Prefab 以不同的位置和旋转进行实例化
- c - 用switch case C语言读取字符串
- php - 对全天的时间段运行相同的 MYSQL 查询,有没有更好的方法?
- google-app-engine - 从已删除的项目中删除域
- javascript - 如何使用 async-await 然后在完成的 Mocha 测试中使用?
- java - 我无法通过 Bitstamp 交换在 Java 上使用 Fix Protocol 创建 SSL 连接
- android - 想要在 retrofitV2 中设置字符串或 TextView 中的 ArrayList 名称