将数字转换为货币

Convert number to currency

我们需要将普通数字转换为货币值。然而,我们发现似乎没有任何效果。

我们尝试了下面的基本代码,但是 returns 价值 123,456.00 美元,而它应该是 1,234.56 美元。

$rawNumber = 123456
$newNumber = 0

$newNumber = "{0:c}" -f $rawNumber

我们尝试了“{0:c}”的不同迭代(c2、c1 等),但它总是 returns 一个数字,只是在末尾添加零。

我们尝试将数字转换为字符串并插入小数点、逗号和美元符号,但我们要处理的数字可能短至 2 或长至 10,因此它变得有点像野兽尝试并计划每一种可能的组合。

我们是否遗漏了一些明显的东西可以轻松地将数字转换为货币价值?

感谢您提供的任何帮助。

如果你有一个货币的主要单位的细分,你需要将输入值除以得到主要单位的数量,在这种情况下:

$dollars = $rawNumber / 100
$formattedString = '{0:C}' -f $dollars

请注意,生成的格式化字符串将取决于当前的语言环境。如果您想要强制执行特定的语言环境,则可以将 [cultureinfo] 对象传递给目标对象的 ToString() 方法。这里显示 en-USde-DEda-DK:

PS C:\> 'en-US','de-DE','da-DK' |ForEach-Object { $dollars.ToString('C',[cultureinfo]$_) }
,234.56
1.234,56 €
1.234,56 kr.

您可以使用 {0:C2} 格式化输入 C2 中的 2 是小数位数。

示例:

$rawNumber = 123456
$newNumber = 0

$newNumber = "{0:C2}" -f $rawNumber