ABAP的计算精度问题。

2020-09-21 15:27发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我遇到了一个关于...

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

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


大家好,

我遇到了一个关于除法和乘法的问题。 请参阅以下Java代码。

p = a = 154.8,b = 37,c = 144。

双重d = b/c;

d = a * d;

" d"的结果是39.775

但是,我已经在ABAP中制作了一个类似的程序,请参见下文。

数据lv_decfloat34_1类型为decfloat34。
数据lv_decfloat34_2类型为decfloat34。
数据lv_decfloat34_3类型为decfloat34。
数据lv_decfloat34_4类型为decfloat34。

lv_decfloat34_1 =
lv_decfloat34_1。 。
lv_decfloat34_3 = 144.

lv_decfloat34_4 = lv_decfloat34_2/lv_decfloat34_3。
lv_decfloat34_4 = lv_decfloat34_1 * lv_decfloat34_4。<9999> 9999 9999

写入:lv_decfloat34_4。

数据lv_f_1类型f。
数据lv_f_2类型f。
数据lv_f_3类型f。
数据lv_f_4类型f。

lv_f_1 = '154.8'。
lv_f_2 = 37.
lv_f_3 = 144.

lv_f_4 = lv_f_2/lv_f_3。
lv_f_4 = lv_f_4 * lv_f_1。

*结果为3,9774999999999999E + 01

写入:lv_f_4。

数据lv_p_1(16)类型p DECIMALS 14.
数据lv_p_2(16)类型p DECIMALS 14.
数据lv_p_3(16)类型p DECIMALS 14. < br>数据lv_p_4(16)类型p DECIMALS 14.

lv_p_1 ='154.8'。
lv_p_2 = 37.
lv_p_3 = 144.

lv_p_4 = lv_p_2/lv_p_3。
lv_p_4 = lv_p_4 * lv_p_1。

*结果为39,77499999999931

写:lv_p_4。

我也用C ++做过类似的实验。 结果与JAVA相同。

由于客户正在使用Excel验证结果,结果为39.775,不等于我们的结果。 因此我们遇到了问题。 有人可以解决这个问题吗?

谢谢

Aicro

5条回答
Aaron 3364
2020-09-21 16:02

Hi Himanshu,

感谢您的答复,但我不希望这样转换,因为无法看到我应保留哪个小数,即在这种情况下我有3个小数,但在其他情况下我们需要更多。 JAVA和C ++的作用是如此自然,以至于它直接告诉我"正确"的结果。

所以我想知道,包括功能模块在内的任何方式都可以具有与JAVA和C ++相同的行为。

一周热门 更多>