计算结果有问题。

2020-09-10 09:58发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) CR13:SAP Bu...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


CR13:SAP BusinessObjects Crystal Reports 2013支持包5版本14.1.5.1501
数据库:MariaDB 10.1
-表:test
-字段
result_a FLOAT(5,1)
result_b FLOAT(5,1)
result_c FLOAT(5,2)

result_a = 4.4,result_b = 4.5,result_c = 0.5

-报表中的公式
Formula_d:{test .result_a}-{test.result_b}
Formula_e:{@formual_d} * {test.result_c}
round_005:round(-0.05,1)//--->`-0.1`
round_1 :round({@ formula_e},1)
Formula_check:

本地号码var a:= 4.40;
本地号码var b:= 4.50;
本地数字var c:= 0.50;
round((a-b)* c,1); //----->`-0.1`

--------------------------------------------------- -----------------------------
我想要`-0.1`但结果是`0.0`

对不起我的英语不好

报告-test.jpg (169.8 kB)
2条回答
一只江湖小虾
2020-09-10 10:28

嗨,

我重新创建了测试表 在SQL Server中,我的结果按预期工作。 我的检查公式显示为-0.10。

区别在于SQL Server必须使用Decimal(5,1)而不是Float,因为这是完全不同的数字类型。

由于这在SQL Server中有效,所以我认为问题可能出在数据库方面。 您是否正在使用ODBC或JDBC将Crystal连接到MariaDB?

您看到的问题通常是精度问题,并且数据库驱动程序未将数字解释为正确的精度。 一种测试方法是将公式中的舍入值增加到2,并将公式格式化为2位小数:

round_1:round({@ formula_e},2)

Crystal可能 能够正确显示该数字,或者如果您提高报表的精度,至少可以使您更准确地表示该数字。

检查MariaDB站点,并确保您拥有最新的驱动程序,然后查看是否有帮助。

祝你好运

Brian

一周热门 更多>