Powershell 将数字转换为货币

Powershell 将数字转换为货币,powershell,currency-formatting,Powershell,Currency Formatting,我们需要将普通数字转换为货币值。然而,我们发现似乎没有任何效果 我们尝试了下面的基本代码,但返回的值为$123456.00,而实际值为$1234.56 $rawNumber = 123456 $newNumber = 0 $newNumber = "{0:c}" -f $rawNumber 我们尝试了不同的“{0:c}”(c2、c1等)迭代,但它总是返回一个数字,但只是在末尾加上零 我们尝试将数字转换为字符串,并插入十进制、逗号和美元符号,但我们所处理的数字可以短到两个,也可以长到十个,因此

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

我们尝试了下面的基本代码,但返回的值为$123456.00,而实际值为$1234.56

$rawNumber = 123456
$newNumber = 0

$newNumber = "{0:c}" -f $rawNumber
我们尝试了不同的“{0:c}”(c2、c1等)迭代,但它总是返回一个数字,但只是在末尾加上零

我们尝试将数字转换为字符串,并插入十进制、逗号和美元符号,但我们所处理的数字可以短到两个,也可以长到十个,因此尝试和计划每一种可能的组合会变得有些麻烦

我们是否缺少一些显而易见的东西,可以轻松地将数字转换为货币值


感谢您提供的帮助。

如果您对货币的主要单位进行了细分,则需要将输入值除以以获得主要单位的数量,在这种情况下:

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

请注意,生成的格式化字符串将取决于当前区域设置。如果要强制执行特定的区域设置,可以将
[cultureinfo]
对象传递给目标对象的
ToString()
方法。此处显示为
en-US
de-de
da-DK

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

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

例如:

$rawNumber = 123456
$newNumber = 0

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

可能(反向)重复@LotPings是和否。。。主要是因为计算机不知道我们对字符串和数字施加了什么含义,除非我们真的告诉计算机:)应该提到的是,格式字符串操作符将应用当前的语言环境设置,这里有一个德语区域设置
$formattedString
包含
1.234,56€
,虽然它确实在数字前面添加了美元符号,但它仍然生成一个数字,该数字的末尾添加了零:$123456.00。已更新为正确的格式@杰森的答案更为多样——向上投票