Private/Test-InfraPulseNumber.ps1
|
function Test-InfraPulseNumber { [CmdletBinding()] param( [AllowNull()] [object]$Value, [double]$Minimum = [double]::MinValue, [double]$Maximum = [double]::MaxValue ) if ($null -eq $Value) { return $false } $number = 0.0 $text = [string]$Value $styles = [System.Globalization.NumberStyles]::Float -bor [System.Globalization.NumberStyles]::AllowThousands $parsed = [double]::TryParse($text, $styles, [System.Globalization.CultureInfo]::InvariantCulture, [ref]$number) if (-not $parsed) { $parsed = [double]::TryParse($text, $styles, [System.Globalization.CultureInfo]::CurrentCulture, [ref]$number) } if (-not $parsed -or [double]::IsNaN($number) -or [double]::IsInfinity($number)) { return $false } return ($number -ge $Minimum -and $number -le $Maximum) } |