SQLite的小数位问题

SQLite的小数位问题,第1张

概述我有一个SQLite3表,其列具有格式DECIMAL(7,2),但每当我选择值不具有非零第二小数位(例如.3.00或3.10)的行时,结果始终具有尾随零(s)遗失(例如3或3.1).有没有办法在SELECT语句中应用格式化函数,以便获得所需的2dp?我尝试过ROUND(),但这没有效果.否则,每次执行SELECT语句时,我都必须继续将生成的列值转换为显示所需的格式(在我的情况下使用 Python) 我有一个sqlite3表,其列具有格式DECIMAL(7,2),但每当我选择值不具有非零第二小数位(例如.3.00或3.10)的行时,结果始终具有尾随零(s)遗失(例如3或3.1).有没有办法在SELECT语句中应用格式化函数,以便获得所需的2dp?我尝试过ROUND(),但这没有效果.否则,每次执行SELECT语句时,我都必须继续将生成的列值转换为显示所需的格式(在我的情况下使用 @L_502_0@),这真的很痛苦.

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

任何帮助,将不胜感激.

艾伦

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

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

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

总结

以上是内存溢出为你收集整理的SQLite的小数位问题全部内容,希望文章能够帮你解决SQLite的小数位问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1178698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存