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