上传后小数精度更改

2020-09-04 09:52发布

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

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


我有一个要上传到HANA中的表格的CSV文件。 该文件包含小数点,因此小数点后最多18位数字。 我将该列定义为DECIMAL(34,18)。 当数字在小数点后的位数较少时(例如0.3334),这是一个问题,在检查表的内容时数字显示为0.3333999999999999749741540079867263557。 为什么数字不简单地显示为源csv文件中的值?

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

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


我有一个要上传到HANA中的表格的CSV文件。 该文件包含小数点,因此小数点后最多18位数字。 我将该列定义为DECIMAL(34,18)。 当数字在小数点后的位数较少时(例如0.3334),这是一个问题,在检查表的内容时数字显示为0.3333999999999999749741540079867263557。 为什么数字不简单地显示为源csv文件中的值?

付费偷看设置
发送
4条回答
亦是此间程序员
1楼-- · 2020-09-04 10:26

嗨,

据我所知,可以通过SQL脚本动态处理小数精度。

我建议从CSV中"按原样"加载实际值,并在模型中再增加一列计算列,并使用条件处理精度。 然后填充此cal.column作为报告。

希望这会有所帮助。

如果您需要更多信息,请告诉我。

谢谢

此致

Subramaniyan Ganesan

樱桃小丸子0093
2楼-- · 2020-09-04 10:00

即使数字稍有变化,我的问题也得到解决。 将比例从原始的4增加到10,可以使所有计算产生良好的结果。 实际上,还有另一个问题导致数字显着偏离,这是无关紧要的。 现在快乐的露营者。 :)感谢您的帮助Witalij。

亦是此间程序员
3楼-- · 2020-09-04 10:18

我认为您遇到的问题是因为操作系统(C ++)无法"忠实"存储超过15或16位数字的数字,所以当 您告诉它是一个18位十进制数,则必须使用Double(0.3334 = 0.333399999999999974154007986726355738937854766845703125以64位Double表示,如在 https://baseconvert.com/ieee-754-floating-point )。

是否可以在不损失数据质量的情况下将精度降低到16位? 我的HANA Express(2.0 SPS03)上没有小数(34,16)。

我设法欺骗负载的另一种方法是将Excel中的CSV文件保存为XLSX,并将这些数字保存为文本。 然后使用数据库资源管理器的导入文件加载XSLS。 我在HANA表中获得了所需的精度十进制(34,18)数据。

致谢。

蓋茨
4楼-- · 2020-09-04 10:09

感谢您的回复。 我尝试切换到十进制(12,10)。 在一种情况下,它以0.63加载0.63,但随后以0.3699999999加载0.37。 疯。 它甚至无法以一致的方式运行。 该数据用于拆分其他行,因此对于给定的键,总数必须恰好为1(例如0.63 + 0.37),而不是0.999999999,否则总数将不再正确。 我还尝试在源csv文件中附加0,但这无济于事。

我以前没有使用过计算字段,但是也许我可以尝试在计算字段中进行一些四舍五入。

我还将尝试查看使用Excel源文件是否有更好的运气。

一周热门 更多>