我有一个字符串,
$string = "2,55"
如何将此字符串转换为十进制数?
我有一个字符串,
$string = "2,55"
另一种转换方式(不一定更好)是使用特定区域设置的ToDecimal
方法。这里我使用的是标准的法国文化。
[System.Convert]::ToDecimal("2,55",[cultureinfo]::GetCultureInfo('fr-FR'))
2.55
,
替换为 .
不可靠且稍微慢一些(因为必须创建另一个字符串)。Parse 和 TryParse 都有一个你可以使用的区域参数。PS D:\> $string = "2,55"
PS D:\> $culture = Get-Culture
PS D:\> [decimal]::Parse($string, $culture)
2.55
PS D:\> [decimal]$dec = 0
PS D:\> [decimal]::TryParse($string, [Globalization.NumberStyles]::Float, $culture, [ref]$dec)
True
PS D:\> $dec
2.55
如果您知道输入的区域设置,那么通过使用 GetCultureInfo
直接解析该区域设置。
$culture = [cultureinfo]::GetCultureInfo('fr-FR')
[decimal]$string.Replace(",", ".")
$string = "100.5"
$decimal = [decimal]$string
$string + 0.5
# Outputs 100.10.5
$decimal + 0.5
# Outputs 101,0
更多信息可以在这里找到
.
。因此,OP 的输入字符串不会产生期望的结果:[decimal] "2,55"
-> 255
;也就是说,,
被解释为千位分隔符,并被有效地忽略了。 - mklement0