PowerShellのToStringで数値を書式指定で出力する際にはまった2点。どちらもエラーメッセージが適切ではなく、原因特定に苦労した。 PSVersion 5.1.14393.2969, Windows Server 2016上のISEで開発。Set-StrictMode -Version latest

書式#,#はダメ

$num.ToString('#,#') 

にて$numが0だと「“ToString” のオーバーロードで、引数の数が “1” であるものが見つかりません。」と出る。

$num.ToString('#,0')

とすることで、正しく出力される。

キャスト後のtoString

$s_num="99,999,999,99" 

の場合に書式指定で出力したい場合、いったんlongにキャストするので

[long]$s_num.ToString("#,0")

と書くと、同様に「“ToString” のオーバーロードで、引数の数が “1” であるものが見つかりません。」とでる。正解は

([long]$s_num).ToString("#,0")

キャスト演算子よりもToStringの方が優先度が高いのか…