我们需要将纯数字转换为货币值。但是,我们发现没有任何作用。
我们尝试了以下基本代码,但是当它应为$ 1,234.56时,返回的值是$ 123,456.00。
$rawNumber = 123456
$newNumber = 0
$newNumber = "{0:c}" -f $rawNumber
我们尝试了“ {0:c}”(c2,c1等)的不同迭代,但是它总是返回一个数字,但只是在最后加上零。
我们尝试将数字转换为字符串并插入小数,逗号和美元符号,但是我们正在处理的数字可能短至两个或长至十个,因此尝试使用它就像野兽一样并计划所有可能的组合。
我们是否缺少明显的东西来轻松将数字转换为货币值?
感谢您提供的任何帮助。
答案 0 :(得分:5)
如果您将货币的基本单位细分,则需要对输入值进行除法以获得基本单位数,在这种情况下:
$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.
答案 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)