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

问题描述 投票:0回答:4

我有一根绳子,

$string = "2,55"

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

powershell decimal data-conversion
4个回答
6
投票

另一种转换方法(不一定更好)是使用具有特定文化的

ToDecimal
方法。在这里我使用的是标准的法国文化。

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

4
投票

您应该使用当前区域设置进行转换。将

,
替换为
.
不可靠并且速度稍慢(因为必须创建另一个字符串)。 ParseTryParse 都有一个可以使用的区域性参数

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”这样的指数,那么

当前其他答案都不起作用(尽管它可能看起来起作用)。有关更多详细信息,请阅读如何在 PowerShell 中将 5.7303333333e+02 等字符串转换为十进制?


3
投票
简而言之 -

[decimal]$string.Replace(",", ".")
    

-1
投票
要强制转换为特定数据类型,请在值或变量前面加上方括号中的类型前缀,这称为强制转换运算符并强制转换为所选数据类型:

$string = "100.5" $decimal = [decimal]$string $string + 0.5 # Outputs 100.10.5 $decimal + 0.5 # Outputs 101,0

更多信息可以在这里

找到

© www.soinside.com 2019 - 2024. All rights reserved.