在SAP PO中使用格式编号时长十进制不舍入

2020-08-22 04:58发布

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

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


专家,

在使用formatnumber来取整十进制数时,我遇到了一个奇怪的问题。

我观察到,如果在小数点后两位开始都是偶数,那么四舍五入就不会发生。

对于十进制后的奇数值,四舍五入正确进行。

示例:

1126.1050

1020.1250

格式编号适用于<50和> 50完美,但仅在= 50舍入时才出现问题。

如果您遇到相同的问题,请告诉我。

decimal.jpg

decimal.jpg (59.6 kB)

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

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


专家,

在使用formatnumber来取整十进制数时,我遇到了一个奇怪的问题。

我观察到,如果在小数点后两位开始都是偶数,那么四舍五入就不会发生。

对于十进制后的奇数值,四舍五入正确进行。

示例:

1126.1050

1020.1250

格式编号适用于<50和> 50完美,但仅在= 50舍入时才出现问题。

如果您遇到相同的问题,请告诉我。

decimal.jpg

decimal.jpg (59.6 kB)
付费偷看设置
发送
9条回答
暮风yp
1楼 · 2020-08-22 05:40.采纳回答

嗨!

字符串模式= formatStr.trim();
 字符串小数点分隔符= eparator.trim();
 DecimalFormatSymbols dfs = new DecimalFormatSymbols();
 if(!(decimalSeparator == null ||"" .equals(decimalSeparator))){
 char sep = decimalSeparator.charAt(0);
 dfs.setDecimalSeparator(sep);
 }
 DecimalFormat df =新的DecimalFormat(pattern,dfs);
 df.setRoundingMode(RoundingMode.HALF_UP);
 返回df.format(new BigDecimal(num)); 

关于Evgeniy。/p>

小灯塔
2楼-- · 2020-08-22 05:55

Evgeniy,

能帮我解决这个问题吗?

我的要求是12345.1250是否也应该转换为12345.13。

此致

Kiran Polani。

奄奄一息的小鱼
3楼-- · 2020-08-22 05:42

嗨!

这只是一个猜测,但是" FormatNumber"似乎使用了Java DecimalFormat类"在幕后",而该类又使用了舍入 默认情况下为模式RoundingMode.HALF_EVEN:

除非两个邻居之间的距离都等距,否则舍入模式将向"最近的邻居"舍入,在这种情况下,应向偶数邻居舍入。

例如:4 <-4.5-5,但5-5.5-> 6

关于,Evgeniy。

微wx笑
4楼-- · 2020-08-22 06:00

嗨 ! 我将简单地使用Manoj提供的代码段,并添加:

df.setRoundingMode(RoundingMode.HALF_UP)

关于此,伊夫基尼。

wang628962
5楼-- · 2020-08-22 05:38

嗨 !

我建议使用UDF,例如利用提到的java类,但是将RoundingMode.HALF_UP作为舍入模式。

关于Evgeniy。

Cikesha
6楼-- · 2020-08-22 06:01
< p>嗨,

您能帮我在Udf上吗?

此致

Kiran Polani

Hi Polani,

您尝试过udf吗?

此致

Bhaskar。

一周热门 更多>