So-net無料ブログ作成
検索選択
QLOOKアクセス解析

[CTP3] uint64 の演算 [PowerShell]

PowerShell v1 では符号なし64ビット変数 uint64 間の演算を行おうとするとエラーになります。 ただし実際に大きな数値が演算子の両側にあるときのみです。 Uint64型の変数が演算対象であっても、格納されている値が 2147483647(16進数で 7FFFFFFF)を超えていなければエラーは発生しません 。
The operation '[System.UInt64] - [System.UInt64]' is not defined. 
v2 CTP3 ではそのような制限はなく演算可能となっていますね。
PS > [uint64]$v1 = 2147483648
PS > [uint64]$v2 = 2147483647
PS > $v1 - $v2
でもエラーはでません。
CTP2 ではどうでしたっけ?まだだめだったような。 (今試せる環境が無い・・・元に戻すの面倒)
今までは
  • 1bit 精度を失っても問題のない場合には、それぞれ2で割って引いて2倍する。
  • そもそも元の値がInt64の範囲を超えない保証があるならキャストして引き算する。 
  • Decimal構造体を使う。たとえば $GDiff = [Decimal]$G2 - [Decimal]$G1 のように。
などと回避してましたが、これで面倒がなくなりますね。


タグ:powershell
メッセージを送る
人気ブログランキングへ
 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。