You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GRDB SQLite筛选中整数除法问题:如何正确对比错误率阈值?

解决GRDB查询错误占比超阈值词汇的问题

你当前的代码逻辑存在两个问题:一是计算的是正确占比小于阈值,虽然数学上等价于错误占比大于阈值,但逻辑表达不直观;二是未处理timesSeen = 0的情况,这类从未被测试的词汇会因除以零的计算问题被误纳入结果。

修正后的代码直接计算错误占比,并过滤掉无测试记录的词汇:

func getIncorrectWords(db: GRDB.Database, threshold: Double) throws -> [Word] {
    let timesSeen = Column("timesSeen")
    let timesCorrect = Column("timesCorrect")
    // 错误占比 = (总测试次数 - 正确次数) / 总测试次数
    let errorRate = (timesSeen - timesCorrect) / timesSeen
    
    return try words
        .filter(timesSeen > 0) // 排除无测试记录的词汇
        .filter(errorRate > threshold) // 筛选错误占比超过阈值的词汇
        .fetchAll(db)
}

关键说明:

  • 先通过timesSeen > 0过滤,避免出现除以零的运算错误,同时排除没有测试数据的无效词汇。
  • 直接计算错误占比(timesSeen - timesCorrect) / timesSeen,与阈值对比,逻辑更清晰,完全匹配你“错误猜测占比超过特定阈值”的需求。
  • 若阈值为百分比数值(如错误率超过50%),传入0.5即可。

内容的提问来源于stack exchange,提问作者citelao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:42:08