在 Dynamics AX 2012 中将实数转换为带小数的字符串
已出版: 2025年2月16日 UTC 10:41:05
在本文中,我解释了如何在 Dynamics AX 2012 中将浮点数转换为字符串同时保留所有小数,包括一个 X++ 代码示例。
为了使尽可能多的人能够访问本页面,本页面由英文机译而成。遗憾的是,机器翻译技术尚不完善,因此可能会出现错误。如果您愿意,可以在此处查看原始英文版本:
Convert a Real to String with All Decimals in Dynamics AX 2012
Convert a Real to String with All Decimals in Dynamics AX 2012
本文中的信息基于 Dynamics AX 2012 R3。它可能对其他版本有效,也可能无效。
有时候我需要将实数转换为字符串。通常,只需将其传递给 strFmt() 就足够了,但该函数总是四舍五入到小数点后两位,这并不总是我想要的。
然后有 num2str() 函数,它确实运行良好,但要求您提前知道想要多少个小数和多少个字符。
如果您只想将数字转换为包含所有数字和小数的字符串,该怎么办?出于某种原因,我总是会用 Google 搜索这个问题,因为它出奇地晦涩难懂,而且我很少这样做,所以我通常记不清具体怎么做了——在大多数编程语言中,我期望您可以将实数连接到空字符串,但 X++ 不支持这样做。
无论如何,到目前为止,我发现最简单的方法是使用 .NET 调用。这里也有多个选项,有或没有高级格式选项,但如果您只是想要将实数转换为字符串,那么这就足够了:
stringValue = System.Convert::ToString(realValue);
如果要在 AOS 上运行此代码(例如在批处理作业中),请记住首先声明必要的代码访问权限。在这种情况下,您需要 ClrInterop 类型的 InteropPermission 来调用 .NET 代码,因此完整的代码示例将如下所示:
new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
请注意,这个简单的 System::Convert 函数使用系统当前的区域设置来处理小数点字符。这对您来说可能不是问题,但对于我这个生活在使用逗号而不是句号作为小数分隔符的地区的人来说,如果字符串需要在其他系统必须可读的文件中使用,则可能需要进一步处理。