加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite的小数位问题

发布时间:2020-12-12 23:42:39 所属栏目:百科 来源:网络整理
导读:我有一个SQLite3表,其列具有格式DECIMAL(7,2),但每当我选择值不具有非零第二小数位(例如.3.00或3.10)的行时,结果始终具有尾随零(s)遗失(例如3或3.1).有没有办法在SELECT语句中应用格式化函数,以便获得所需的2dp?我尝试过ROUND(),但这没有效果.否则,每次执行
我有一个SQLite3表,其列具有格式DECIMAL(7,2),但每当我选择值不具有非零第二小数位(例如.3.00或3.10)的行时,结果始终具有尾随零(s)遗失(例如3或3.1).有没有办法在SELECT语句中应用格式化函数,以便获得所需的2dp?我尝试过ROUND(),但这没有效果.否则,每次执行SELECT语句时,我都必须继续将生成的列值转换为显示所需的格式(在我的情况下使用 Python),这真的很痛苦.

我甚至不介意结果是字符串而不是数字,只要它具有正确的小数位数.

任何帮助,将不胜感激.

艾伦

SQLite内部使用IEEE二进制浮点运算,这对于维持特定数量的小数确实不适合.要获得这种类型的十进制处理,需要以下方法之一:

>定点数学,或
> IEEE十进制浮点(相当罕见),或
>将所有内容都视为字符串

在提取之后格式化值(从浮点转换为字符串)是实现事物的最简单方法.您甚至可以在某种包装器中隐藏它,以便其余的代码不必处理后果.但是如果你以后要对值进行算术运算,那么你最好不要格式化,而是使用查询返回的值,因为格式并重新转换回二进制浮点(Python使用,就像绝大多数其他现代语言)以降低的精度丢失了大量信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读