gpt4 book ai didi

powershell - 没有 CurrencyGroupSeparator 的舍入

转载 作者:行者123 更新时间:2023-12-03 16:39:29 27 4
gpt4 key购买 nike

我正在尝试将一个值从 Powershell 输出到 Nagios。我想要一个只有 .对于小数,不是 1000 和 1000000 的分隔符,并且始终是 5 位小数,即使它是尾随零。

起初我有这个:

$DiskStruct.AvgDiskReadQueueValue = '{0:N5}' -f ($AvgObjDiskReadQueueValues.average)

但这导致:2205.06040082681转换为:2,205.06040

然后我尝试了

$DiskStruct.AvgDiskReadQueueValue = [decimal][math]::Round($AvgObjDiskReadQueueValues.average, 5)

但不知何故,这导致 Powershell 脚本有时以科学记数法输出。而且它没有显示尾随零。结果 => 读/秒 = 2205.0604

那么我该怎么做才能始终输出 5 位小数,但不显示任何货币组分隔符?

(Get-Culture).NumberFormat.CurrencyGroupSeparator

我需要的结果是 2205.06040。

最佳答案

我最初将此作为评论发布,但我想这种可能性并不是很明显,所以在这里给出答案可能会有用。

{0:Nx} 将数字转换为可以转换回任何合适的数字类型的字符串。因为你想保留小数:

[decimal]('{0:N5}' -f ($AvgObjDiskReadQueueValues.average))

就是你想要的。


要使此解决方案与文化无关,您可以使用 a little trick :

$OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
[System.Threading.Thread]::CurrentThread.CurrentCulture = "en-US"

# Do culture-sensitive stuff here.
# (As long as it doesn't execute in a different thread.)
[decimal]('{0:N5}' -f ($AvgObjDiskReadQueueValues.average))

[System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture

关于powershell - 没有 CurrencyGroupSeparator 的舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32958076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com