[abap2xlsx] XLSX 15位小数:导入到SAP时如何处理?

2020-09-09 05:30发布

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

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


Microsoft Excel具有自己的内部逻辑,用于保存带小数位的值。 在内部,Excel会使用15个小数位进行计算。

遇到以下问题:

我有一个带有2个单元格的Excel文件。 单元格格式设置为"常规"。 (即使使用定义的小数位数更改"数字"格式也不能避免此问题。)

Excel通过以下方式保存这些值:在sheet1.xml中保存
值1.234 =>:在sheet1.xml中保存 1.234
值12.1215 =>: 12.121499999999999

如您所见,Excel在内部将12.1215存储为12.121499999999999。

现在使用abap2xlsx(ZCL_EXCEL_READER),我自己的转换以及通过类cl_fdt_xl_spreadsheet进行的导入也将得出值12.121499999999999。

有人想避免这种情况吗?

是否有人有想法将内部值转换回可见/真实值?

预先感谢

迈克尔

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

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


Microsoft Excel具有自己的内部逻辑,用于保存带小数位的值。 在内部,Excel会使用15个小数位进行计算。

遇到以下问题:

我有一个带有2个单元格的Excel文件。 单元格格式设置为"常规"。 (即使使用定义的小数位数更改"数字"格式也不能避免此问题。)

Excel通过以下方式保存这些值:在sheet1.xml中保存
值1.234 =>:在sheet1.xml中保存 1.234
值12.1215 =>: 12.121499999999999

如您所见,Excel在内部将12.1215存储为12.121499999999999。

现在使用abap2xlsx(ZCL_EXCEL_READER),我自己的转换以及通过类cl_fdt_xl_spreadsheet进行的导入也将得出值12.121499999999999。

有人想避免这种情况吗?

是否有人有想法将内部值转换回可见/真实值?

预先感谢

迈克尔

付费偷看设置
发送
2条回答
大简至美
1楼-- · 2020-09-09 06:09

似乎存储区可能显示的位数超过15(此处为17位数:12.121499999999999),但Excel永远不能显示超过15位有效位数。

因此,此代码应该可以工作:

 DATA bf TYPE f。
 DATA df TYPE decfloat16。
 bf = '12 .121499999999999'。
 df = round(val = bf prec = 15)。
 ASSERT df = '12 .1215'。
三十六小时_GS
2楼-- · 2020-09-09 05:44

嘿桑德拉,

是的,您是对的。 我意识到了。 我现在使用"回合"。 非常感谢!

最好的问候

Michael

一周热门 更多>