我有一种奇怪的行为,试图在与SQLite3一起工作的Select上做一些简单的计算。也许这是我的方法是错误的,因为它可能会更好地避免在sqlite上的计算。因此,为了避免这类问题,我在javascript代码上移动了数学操作(这是一个钛应用程序)。
顺便说一句,我知道sqlite在进行计算之前通常会将数据“转换”成数字类型,如下所示:http://www.sqlite.org/datatype3.html#operators
所有的数学运算符(+,-,*,/,%,<<,>>,&,和)在执行前都将两个操作数转换为数值存储类
在我的示例中,当SUM(值)返回一个整数时,下面的/100截断删除所有十进制数的值,而使用SUM(值)数值时,下面的/100按预期工作。

任何人都能解释我这里发生了什么,为什么?我无法理解我是犯了一个错误,还是它是sqlite中的一个bug (相当荒谬)。
发布于 2017-09-06 16:33:55
数字表示整型或实型。您的原始值已经是数字,因此转换为数字不会更改任何内容。
文档说:
如果所有非空输入都是整数,则sum()的结果是整数。如果sum()的任何输入既不是整数,也不是NULL,则sum()返回一个浮点值,它可能是真实和的近似值。
如果组中的所有值都是整数,那么sum()将返回一个整数,并且该除法是一个整数除法。
如果不能确保所有表值都是REALs,则必须强制以浮点形式进行除法,方法是将结果转换为REAL,或仅用100.0除法。
https://stackoverflow.com/questions/46078423
复制相似问题