Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite计算值相同,结果不同_Sql_Sqlite_Math - Fatal编程技术网

SQLite计算值相同,结果不同

SQLite计算值相同,结果不同,sql,sqlite,math,Sql,Sqlite,Math,我的表包含这些值 productName | purchasePrice | tax | price ------------+---------------+-----+-------- Product 1 | 5099 | 16 | 10099 Product 1 | 5099 | 16 | 10099 Product 1 | 5099 | 16 | 10099 Product 1 | 5099

我的表包含这些值

productName | purchasePrice | tax | price 
------------+---------------+-----+--------
Product 1   | 5099          | 16  | 10099
Product 1   | 5099          | 16  | 10099
Product 1   | 5099          | 16  | 10099
Product 1   | 5099          | 16  | 10099
Product 2   | 5099          | 19  | 10099
Product 2   | 5099          | 19  | 10099
Product 2   | 5099          | 19  | 10099
我对总利润的计算如下

SUM( price- ( price * tax/100.0  + purchasePrice)) as Profit
利润结果=22780.21000000006

我对每种产品的利润计算如下

SUM(price- (price*TAX/100.0 + purchasePrice)) as Profit GROUP BY productName
产品1的利润结果=13536,6
结果为产品2的利润=9243,57

总数22780,17

我必须对这些值进行四舍五入,并将它们除以/100.0,因为我已经读到,最好不要在Sqlite中存储带有浮点的值

我这样做四舍五入和/100.0

总计四舍五入结果=227.8

ROUND((SUM( price- ( price * tax/100.0  + purchasePrice)))/100 ,2) as Profit
每种产品一轮

ROUND((SUM( price- ( price * tax/100.0  + purchasePrice)))/100 ,2) as Profit GROUP BY productName
产品1结果=135,37
产品2结果=92,44

Total227,81但是Total的轮给我的结果是=227.8

ROUND((SUM( price- ( price * tax/100.0  + purchasePrice)))/100 ,2) as Profit

有什么想法吗?

在最新版本的SQL lite中,以下代码与Round配合使用

select SUM(Profit) from (
select productName,round((SUM(price- (price*TAX/100.0 + purchasePrice)))/100 ,2)
as Profit
from test
GROUP BY productName
)x

我认为第一组by的值是错误的-请检查(
22780,17
=>
22780,21
);)。谢谢你,shAt.t,我该如何解决这个问题?
3.3+3.3+3.4=10
四舍五入(3.3,0)+四舍五入(3.3,0)+四舍五入(3.4,0)=9
-使用四舍五入将丢失一些值四舍五入值之和并不总是等于非四舍五入值之和;)。即使我删除舍入,我也会得到错误的结果->我对每种产品的利润的计算是这个总和(price-(price*TAX/100.0+purchasePrice))作为productName的利润组结果作为产品1的利润=13536,6结果作为产品2的利润=9243,57总计22780,17如果使用舍入,您总是会失去一些准确性。根据工作时间和取整函数的不同,您会得到不同的结果。