SQLite的小数位问题

前端之家收集整理的这篇文章主要介绍了SQLite的小数位问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个sqlite3表,其列具有格式DECIMAL(7,2),但每当我选择值不具有非零第二小数位(例如.3.00或3.10)的行时,结果始终具有尾随零(s)遗失(例如3或3.1).有没有办法在SELECT语句中应用格式化函数,以便获得所需的2dp?我尝试过ROUND(),但这没有效果.否则,每次执行SELECT语句时,我都必须继续将生成的列值转换为显示所需的格式(在我的情况下使用 Python),这真的很痛苦.

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

任何帮助,将不胜感激.

艾伦

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

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

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

原文链接:https://www.f2er.com/sqlite/453030.html

猜你在找的Sqlite相关文章