[Tips]数字をカンマ付き文字列に変換

PS C:\Users\daisuke> (122222222).ToString("#,#")
122,222,222

 知ってると意外と便利かも?

1GBは何バイトだーと聞かれたら

PS C:\Users\daisuke> (1GB).ToString("#,#")
1,073,741,824

と、さくっと答えるとカッコイイです。

 フォーマット演算子-fを使ってもできます。

PS C:\Users\daisuke> "{0:#,#}" -f 12345
12,345

複数の値を一気にするにはこうです。

PS C:\Users\daisuke> 123456,11,111111|%{"{0:#,#}" -f $_}
123,456
11
111,111

PowerShellをすごく高機能な電卓と思って最近は愛用しています。[math]のスタティックメソッドも使いがいがありますよ!

.NET開発者にもお勧め。intの最大値はいくつだ?って知りたいときは、

PS C:\Users\daisuke> [int]::MaxValue
2147483647

で一撃です。

コメント

  1. HIRO より:

    自分も電卓として利用することが多いです。
    入力した式を確認できるし、コマンド履歴から再利用できるし、便利ですよね。

  2. むたぐち より:

    ですねー
    あと、前回、出力したオブジェクトにアクセスできるシェル変数があれば完璧なんですが。
    PS>1+1
    2
    とやったとき
    $zenkai
    とやると
    2
    と出るような。

  3. HIRO より:

    それは便利そうですね。

    次期バージョンに、そういうものをたくさん取り入れてほしいものです

  4. S.K. より:

    出力される数値が一つだけであること前提ならprofile.ps1にこんな感じで書き加えておけばいいんじゃないでしょうか

    # 直前の一行を取得
    function Get-LastLine {
    $rect = New-Object System.Management.Automation.Host.Rectangle
    $rect.Top = $Host.UI.RawUI.CursorPosition.Y-1
    $rect.Left = 0
    $rect.Right = 28 #[Decimal]::MaxValue.ToString().Length-1
    $rect.Bottom = $Host.UI.RawUI.CursorPosition.Y-1
    return $Host.UI.RawUI.GetBufferContents($rect)
    del -Path Variable:\$rect
    }

    function prompt {
    ‘PS ‘ + $(Microsoft.PowerShell.Management\Get-Location) + $(if ($nestedpromptlevel -ge 1) { ‘>>’ }) + ‘> ‘ # デフォルトのprompt関数

    [String] $line = $null
    Get-LastLine | % { $line += $_.Character }
    [Decimal] $result = $null
    if ( [decimal]::TryParse($line, [ref]$result) -ne $False )
    {
    $global:ans = $result
    }
    del -Path Variable:\result,Variable:\line
    }

    こんな感じで使えます
    1 + 1
    $ans*2
    $ans*2
    $ans*2
    $ans*2
    $ans*2
    $ans*2

    例によって各行の最後にスペースが挿入されていると思うのでコピペする時は注意してください

タイトルとURLをコピーしました