在 Dynamics AX 2012 中将实数转换为带小数的字符串
已出版: 2025年2月16日 UTC 10:41:05
最后更新 2026年1月12日 UTC 08:52:28
在本文中,我将解释如何在 Dynamics AX 2012 中将浮点数转换为字符串并保留所有小数位,包括一个 X++ 代码示例。
Convert a Real to String with All Decimals in Dynamics AX 2012
本文中的信息基于 Dynamics AX 2012 R3 版本,可能不适用于其他版本。
我偶尔需要将实数转换为字符串。通常,只需将其传递给 strFmt() 函数即可,但该函数总是四舍五入到小数点后两位,这并非我所愿。
还有 num2str() 函数,它的确很好用,但需要你事先知道你想要多少位小数和多少个字符。
如果只想把数字转换成包含所有数字和小数的字符串呢?不知为何,这个问题总是让我忍不住去谷歌搜索,因为它出乎意料地冷门,而且我很少用到,所以通常记不清具体步骤——在大多数编程语言中,我以为可以直接把数字和一个空字符串连接起来,但 X++ 并不支持这种做法。
总之,我发现最简单的方法是使用 .NET 调用。这里也有多种选项,包括带高级格式化选项和不带高级格式化选项的,但如果您只是想将实数转换为字符串,那么以下方法就足够了:
如果这段代码要在 AOS 上运行(例如在批处理作业中),请务必先获取必要的代码访问权限。在这种情况下,您需要一个类型为 ClrInterop 的 InteropPermission 才能调用 .NET 代码,因此完整的代码示例如下所示:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
请注意,这个简单的 System::Convert 函数会使用系统当前区域设置中的小数点分隔符。这可能对您来说不是问题,但对于我这种居住在以逗号而非句点作为小数分隔符的地区的人来说,如果字符串需要用于其他系统必须能够读取的文件中,则可能需要进行进一步处理。
进一步阅读
如果您喜欢这篇文章,您可能还会喜欢这些建议:
- 在 Dynamics AX 2012 中识别文档类别并查询 AIF 服务
- 如何在 Dynamics AX 2012 中从 X++ 代码迭代枚举元素
- 在 Dynamics AX 2012 中的 SysOperation 数据契约类中使用查询
