如何在powershell中将字符串转换为十进制?

Ale*_*reP 7 powershell decimal data-conversion

我有一根绳子,

$string = "2,55"
Run Code Online (Sandbox Code Playgroud)

如何将这个字符串转换为十进制?

Adm*_*ngs 6

另一种转换方法(不一定更好)是使用ToDecimal特定文化的方法。在这里我使用标准的法国文化。

 [System.Convert]::ToDecimal("2,55",[cultureinfo]::GetCultureInfo('fr-FR'))
 2.55
Run Code Online (Sandbox Code Playgroud)


phu*_*clv 5

您应该使用当前的语言环境进行转换。替换,. 不可靠并且速度稍慢(因为必须创建另一个字符串)。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
Run Code Online (Sandbox Code Playgroud)

如果您知道输入的区域设置,则可以使用以下命令直接在该区域设置中进行解析GetCultureInfo

$culture = [cultureinfo]::GetCultureInfo('fr-FR')
Run Code Online (Sandbox Code Playgroud)

请注意,如果字符串包含像“2,55e2”这样的指数,那么当前的其他答案实际上都不起作用(尽管它可能看起来有效)。有关更多详细信息,请阅读如何在 PowerShell 中将 5.7303333333e+02 等字符串转换为十进制?


Viv*_*ngh 3

简而言之 -

[decimal]$string.Replace(",", ".")
Run Code Online (Sandbox Code Playgroud)