如何在powershell中将字符串转换为十进制?
How to convert string to decimal in powershell?
我有一个字符串,
$string = "2,55"
如何将这个字符串转换为十进制?
简而言之 -
[decimal]$string.Replace(",", ".")
要强制转换为特定数据类型,请在值或变量前加上方括号中的类型,这称为强制转换运算符并强制选择数据类型:
$string = "100.5"
$decimal = [decimal]$string
$string + 0.5
# Outputs 100.10.5
$decimal + 0.5
# Outputs 101,0
可以找到更多信息here
另一种转换方法(不一定更好)是使用具有特定文化的 ToDecimal
方法。这里我使用的是标准的法国文化。
[System.Convert]::ToDecimal("2,55",[cultureinfo]::GetCultureInfo('fr-FR'))
2.55
您应该使用当前语言环境进行转换。将 ,
替换为 .
不可靠并且速度稍慢(因为必须创建另一个字符串)。两者 Parse and 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')
请注意,如果字符串包含像“2,55e2”这样的指数,那么当前答案的 none 确实有效(尽管它可能 看起来 有效)。有关详细信息,请阅读 How can I convert a string such as 5.7303333333e+02 to decimal in PowerShell?
我有一个字符串,
$string = "2,55"
如何将这个字符串转换为十进制?
简而言之 -
[decimal]$string.Replace(",", ".")
要强制转换为特定数据类型,请在值或变量前加上方括号中的类型,这称为强制转换运算符并强制选择数据类型:
$string = "100.5"
$decimal = [decimal]$string
$string + 0.5
# Outputs 100.10.5
$decimal + 0.5
# Outputs 101,0
可以找到更多信息here
另一种转换方法(不一定更好)是使用具有特定文化的 ToDecimal
方法。这里我使用的是标准的法国文化。
[System.Convert]::ToDecimal("2,55",[cultureinfo]::GetCultureInfo('fr-FR'))
2.55
您应该使用当前语言环境进行转换。将 ,
替换为 .
不可靠并且速度稍慢(因为必须创建另一个字符串)。两者 Parse and 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')
请注意,如果字符串包含像“2,55e2”这样的指数,那么当前答案的 none 确实有效(尽管它可能 看起来 有效)。有关详细信息,请阅读 How can I convert a string such as 5.7303333333e+02 to decimal in PowerShell?