将数字转换为货币

时间:2019-07-16 16:04:17

标签: powershell currency-formatting

我们需要将纯数字转换为货币值。但是,我们发现没有任何作用。

我们尝试了以下基本代码,但是当它应为$ 1,234.56时,返回的值是$ 123,456.00。

$rawNumber = 123456
$newNumber = 0

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

我们尝试了“ {0:c}”(c2,c1等)的不同迭代,但是它总是返回一个数字,但只是在最后加上零。

我们尝试将数字转换为字符串并插入小数,逗号和美元符号,但是我们正在处理的数字可能短至两个或长至十个,因此尝试使用它就像野兽一样并计划所有可能的组合。

我们是否缺少明显的东西来轻松将数字转换为货币值?

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:5)

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

$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]$_) }
$1,234.56
1.234,56 €
1.234,56 kr.

答案 1 :(得分:1)

您可以使用{0:C2}中的2来格式化输入,C2中的$rawNumber = 123456 $newNumber = 0 $newNumber = "{0:C2}" -f $rawNumber 是小数位数。

示例:

filein = open( 'IOS.j2' )
src = string.Template( filein.read() )

hostname = input("Enter the hostname: ")
subnet = input("Enter the third octet: ")
secret_type = input("Enter the secret_type: ")


d={ 'hostname':hostname, 'secret_type':secret_type }
result = src.substitute(d)

#print result

fileout = open( hostname + '.cfg', 'w' )
fileout.write(result)