如何避免将NETWR的值四舍五入到小数点后两位?

2020-08-14 22:49发布

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

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


大家好,

我有以下问题:

我有一个与货币相关的值,我需要避免舍入(在进行乘法和除法计算之后),并显示该值并保留小数点后4位。

示例

当前值从49.4099999999舍入到49.41。

我需要49.4099。

我尝试将数据元素更改为4位小数,但这不起作用,其值显示为49.4100。

请帮助。

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

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


大家好,

我有以下问题:

我有一个与货币相关的值,我需要避免舍入(在进行乘法和除法计算之后),并显示该值并保留小数点后4位。

示例

当前值从49.4099999999舍入到49.41。

我需要49.4099。

我尝试将数据元素更改为4位小数,但这不起作用,其值显示为49.4100。

请帮助。

付费偷看设置
发送
9条回答
路亽曱_Ryan
1楼 · 2020-08-14 23:15.采纳回答

阅读有关算术表达式,计算类型和转换规则的文档。

作为ABAP开发人员,您应该知道这一点。

95年老男孩
2楼-- · 2020-08-14 23:21

知道为什么需要对货币金额进行此看似奇怪的四舍五入会非常有趣。

小灯塔
3楼-- · 2020-08-14 23:24

尝试以下示例代码。 您将看到所需的结果。

常量c_val类型c长度50值'49 .4099999999'。
数据lv_result类型p十进制4.
DATA(out)= cl_demo_output => new()。

lv_result = round(val = c_val dec = 4 mode = 5)。" ROUND_DOWN

out-> write(lv_result)。
out-> display()。

zZ12138
4楼-- · 2020-08-14 23:10

:)

是的,这有点有趣,因为我们并不总是确定客户的要求。

但是我仍然需要满足要求。

实际上有一种基于货币的换算,并且此值以表格形式打印。

转换有点复杂,由于该转换,小数点在输出中转换为逗号(,)。 同样,由于这种转换,输出中不会显示小数位。

例如,将49.41转换为4,941。

现在,由于小数转换为逗号,因此要求在输出中显示两个小数位。

像这样的东西:4,940.99

我在外部添加了" .00",但他们希望显示一些值而不是" .00"。 因此,为了满足此要求,团队决定在计算出值后显示4位小数,然后将其更改回2位小数。 希望可以解决" .00"问题。

希望你明白了!

:D

感谢评论。

CJones
5楼-- · 2020-08-14 23:10

我得到了输出。 我必须将公式分解为3个部分,并将值存储在具有4个小数位的局部变量中。

这样做是因为公式包含一些声明为2个小数的变量。

因此,最终值是2个小数。

现在,本地变量将显示带有四位小数的值。

谢谢大家的帮助!

:)

打一壶酱油
6楼-- · 2020-08-14 23:33

不确定,您是否通过过OSS注释403254,其中解释了舍入的原理

樱桃小丸子0093
7楼-- · 2020-08-14 23:10

我遇到了相反的问题, 一系列折扣导致条件值未均分到单价中。 我们的客户永远不会接受数学未能正确扩展的发票。 我检查了标准定价程序,发现将NETP条件类型与需求2/计算类型6/基本类型3一起使用将为您舍入条件值,因此数学将起作用,并且客户不会抱怨。

一周热门 更多>