gpt4 book ai didi

sqlite - SQLite的小数位问题

转载 作者:IT王子 更新时间:2023-10-29 06:29:06 46 4
gpt4 key购买 nike

我有一个 SQLite3 表,其中一列的格式为 DECIMAL(7,2),但是每当我选择值不具有非零小数点后第二位(例如 3.00 或 3.10)的行时,结果总是尾随零(s) 缺失(例如 3 或 3.1)。有什么方法可以在 SELECT 语句中应用格式化函数,以便获得所需的 2dp?我试过 ROUND(),但这没有效果。否则,每次我执行 SELECT 语句时,我都必须将结果列值转换为所需的显示格式(在我的例子中使用 Python),这真的很痛苦。

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

如有任何帮助,我们将不胜感激。

艾伦

最佳答案

SQLite 内部使用 IEEE 二进制浮点算法,它确实不适合维护特定的小数位数。要获得这种类型的小数处理,需要以下之一:

  1. 不动点数学,或
  2. IEEE 十进制 float (相当不常见),或
  3. 将所有内容都作为字符串处理。

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

关于sqlite - SQLite的小数位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3846361/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com