Powershell 使用负数进行运算

Powershell 使用负数进行运算

我进行了搜索,但只找到与 Excel 相关的答案。

目的:
计算原始音频 LUFS 值与用户定义的 LUFS 值之间的差值。两个值都是负数,我使用运算来计算这两个值之间的差值,其中所有减法结果小于 -0.5 的音频将被忽略。

注意:
1 - 通过音频日志检查原始 LUFS 值;
2 - 通过 powershell 脚本的参数接收用户定义的 LUFS 值。

脚本:

Param(
   [decimal]$env:_vLUF   
)

[decimal]$userLUFS = $env:_vLUF

$results = " "
$location = "C:\Users\$env:username\Desktop\Áudios LUFS\"
$logSaida = "C:\Users\$env:username\Desktop\Logs_LUFS\"

$logMatches = Select-String -Path "C:\Users\$env:username\Desktop\Logs_LUFS\*.*" -Pattern '(?<I>^ +I:) +(?<LUFS>.+)|(?<I>^Input Integrated:) +(?<LUFS>.+)' -List | Select-Object -Property FileName -ExpandProperty Matches
    $results = foreach ($log in $logMatches) {
        $pos = $log.Filename.IndexOf("_")
        $leftPart = $log.Filename.Substring(0, $pos)
        $rightPart = $log.Filename.Substring($pos+1)
        $LUFS = $log.Groups | Where-Object { $_.Name -eq "LUFS" }
        [PSCustomObject]@{
            Música = $rightPart
            LUFS = [decimal]$($LUFS.Value -replace " .*")
        }
    }


#                      COMMAND to the subtraction:
$results | Where-Object {( ($_.LUFS -($userLUFS)) -lt -0.5)} | Out-File $files

问题:
当原始 LUFS 值大于用户定义的 LUFS 值时,减法正确完成,如下所示:

原始 LUFS ($_.LUFS):-12.0
用户定义的 LUFS ($userLUFS):-8.8

在此处输入图片描述

当用户定义的值大于原始 LUFS 值时,即使两个值都是负数,减法也会在结果中返回正值,如下所示:

原始 LUFS ($_.LUFS) :-8.8
用户定义的 LUFS ($userLUFS):-12.0

在此处输入图片描述

似乎因为这些值为负数,所以它认为 -8.8 大于 -12.0,因为它更接近 0.0,但我想要的是,无论收到的值的顺序如何,结果始终返回负结果。我试过将结果乘以 -1,但它只是将问题反转了。我怎样才能让结果始终返回负值?

答案1

-8.8从数学上来说大于 -12.0。

你可以使用

-1 * [Math]::Abs(yourValue)

无条件地获取负值(或适用时为零)。

相关内容