【问题标题】:SQLite SUM function rounding error - androidSQLite SUM 函数舍入错误 - android
【发布时间】:2012-02-26 22:22:45
【问题描述】:

为什么当我在我的 SQLite 列之一上调用 SUM 时,它没有返回准确的答案?这就是我的意思:

假设我的列中有 4 行要求和

row1      8362.82
row2     +18837.42
row3     +7294.12
row4     +73.23
___________________
         17567.59

现在这些应该加起来是17567.59 对吧?那么我的sum 返回17567.6。这听起来可能没什么大不了的,但我需要准确的小数,而不是四舍五入的小数。随着数字变大,它会进一步四舍五入。谁能解释这个问题的解决方案?谢谢。

【问题讨论】:

    标签: android sqlite sum rounding


    【解决方案1】:

    将值存储为整数而不是浮点数。

    【讨论】:

    • SQLite doesn't believe in data types,我知道它最终都存储为字符串。
    • 是的,它都存储为字符串。但我想我明白你的建议,我保留没有小数的数字,然后加起来,然后将小数滑动两位?问题是如何做到这一点,哈哈
    • 我将初始值乘以 100,相加,然后除以 100,得到相同的结果 17567.6 而不是 17567.59
    【解决方案2】:

    我有同样的舍入问题,除了我的舍入到整数而不是保留小数点后的一位。我改用total() 而不是sum()

    来自the documentation

    total() 的结果总是一个浮点值。的结果 如果所有非 NULL 输入都是整数,则 sum() 是一个整数值。如果有的话 sum() 的输入既不是整数也不是 NULL,然后 sum() 返回一个 浮点值,可能是真实总和的近似值。

    这并不能解释我的问题,因为我的列包含整数和浮点值的混合。但我决定尝试一下,因为它的不同,它奏效了。它还将所有 NULL 相加为 0,而不是 NULL,这在许多情况下很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 2016-05-27
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      相关资源
      最近更新 更多