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
で一撃です。
コメント
自分も電卓として利用することが多いです。
入力した式を確認できるし、コマンド履歴から再利用できるし、便利ですよね。
ですねー
あと、前回、出力したオブジェクトにアクセスできるシェル変数があれば完璧なんですが。
PS>1+1
2
とやったとき
$zenkai
とやると
2
と出るような。
それは便利そうですね。
次期バージョンに、そういうものをたくさん取り入れてほしいものです
出力される数値が一つだけであること前提なら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
例によって各行の最後にスペースが挿入されていると思うのでコピペする時は注意してください