python - 使用 Python for SQLITE Insert 舍入到 2dp
问题描述
我试图在 python 中将我的值四舍五入到小数点后 2 位(使用 jupyter notebook),然后将这些值插入到 SQLITE3 中,但有些值没有四舍五入:
要求:
count = cursor.execute("""SELECT test_user,
SUM(CASE WHEN start >= ? THEN round(julianday(end)*24, 1) - round(julianday(start)*24, 1) ELSE 0 END),
FROM test_table
WHERE start < ?
GROUP BY test_user""", (sdate.to_pydatetime(), edate.to_pydatetime())).fetchall()
回复:
[('1', 0, 8.0, 8.0),
('2', None, None, None),
('3', 0, 7.0, 7.0),
('5', 0.20000000298023224, 0.20000000298023224, 0.20000000298023224),
('6', 0.19999999552965164, 10.199999995529652, 10.199999995529652),
('7', 0.0, 0.0, 0.0),
('8', 5.100000001490116, 5.100000001490116, 5.100000001490116)]
如您所见,一些值已四舍五入,但其他值未四舍五入。还有另一种方法来四舍五入吗?
解决方案
我建议将整个调用四舍五入SUM
,而不是组成总和的单个组件:
SELECT
test_user,
ROUND(SUM(CASE WHEN start >= ?
THEN 24*(JULIANDAY(end) - JULIANDAY(start))
ELSE 0 END), 2) AS user_sum
FROM test_table
WHERE
start < ?
GROUP BY
test_user;
附带说明一下,浮点运算并不精确,因此在您的 Python 代码中,您可能仍会看到小数点后第二位以外的非零数字,但它们并不重要。
推荐阅读
- javascript - 在定义后停止更新值
- python - 由于 ScriptTimedOut,AWS CodeDeploy 在 AfterInstall 中失败
- javascript - 在结账页面 React.js 中不显示重复的产品
- matlab - Matlab代码充电到容量的最大值
- javascript - 如何在进度事件中使用文件阅读器显示文件上传的进度
- sockets - 尽管有请求正文,但每个连接的 http 与 Web 套接字内存使用情况
- numpy - FFT如何进行卷积?如何进行标准化?
- c# - 查看动态模块的权限项自动将“Telerik.Sitefinity.DynamicModules.Model.DynamicContent”更改为[object%20Object]
- ios - 无法在 amplify.api.query 函数中重新加载 tableview
- django - 在查询集上使用 annotate 和 distinct