Miklix

在 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 调用。这里也有多种选项,包括带高级格式化选项和不带高级格式化选项的,但如果您只是想将实数转换为字符串,那么以下方法就足够了:

stringValue = System.Convert::ToString(realValue);

如果这段代码要在 AOS 上运行(例如在批处理作业中),请务必先获取必要的代码访问权限。在这种情况下,您需要一个类型为 ClrInterop 的 InteropPermission 才能调用 .NET 代码,因此完整的代码示例如下所示:

new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();

请注意,这个简单的 System::Convert 函数会使用系统当前区域设置中的小数点分隔符。这可能对您来说不是问题,但对于我这种居住在以逗号而非句点作为小数分隔符的地区的人来说,如果字符串需要用于其他系统必须能够读取的文件中,则可能需要进行进一步处理。

进一步阅读

如果您喜欢这篇文章,您可能还会喜欢这些建议:


分享至 Bluesky在 Facebook 上分享在 LinkedIn 上分享在 Tumblr 上分享分享至 X在 LinkedIn 上分享在Pinterest上固定

Mikkel Christensen

关于作者

Mikkel Christensen
迈克尔 是 miklix.com 的创建者和所有者。他拥有 20 多年的专业计算机程序员/软件开发人员经验,目前全职受雇于一家大型欧洲 IT 公司。不写博客时,他把业余时间花在各种兴趣、爱好和活动上,这在一定程度上反映在本网站涵盖的各种主题上。