2011-12-27 11 views
1

が表示されます。私は22で8を除算し、小数点以下の小数点以下を切り捨てる必要があります(私のシステム上にあるのカンマ)。丸めなし。Powershell - 数値形式では、powershell v2で

ご覧のとおりです。 8分の22は、2.75

 
PS C:\Documents and Settings\Administrator> $(22/8) 
2,75 

期待される結果は、です等しいです。

奇妙なことに、私は奇妙なことに、同じ方法を計算するためにさまざまな方法を使用すると異なる結果になります。

 
PS C:\Documents and Settings\Administrator> "{0:N0}" -f $(22/8) 
3 

PS C:\Documents and Settings\Administrator> "{0:N0}" -f 2.75 
3 

PS C:\Documents and Settings\Administrator> "{0:N0}" -f 2,75 
2 

他のいくつかの例 ...

 
PS C:\Documents and Settings\Administrator> "{0:N0}" -f 2.15 
2 

PS C:\Documents and Settings\Administrator> "{0:N0}" -f 2,15 
2 

原因は何ですか?

答えて

1

これは機能しますか?

[math]::Floor(22/8) 

結果:

+1

小数点以下の小数点以下を削除するには、代わりに床の使用TRUNCATEを。これにより、負の数の場合でも正しい結果が得られます。 –

+0

@jonZ良い呼び出し私は切り捨て方法を知らなかった。私は、AXNが「小数点以下のすべての小数点以下を取り除く」必要性のすべてのケースをよりよく満たすと思う。 –

1

コンマ(少なくとも米国英語システム)は、Powershellによって区切り記号として使用されます。それがあなたのマシンの場合、 "2,75"は "2"と "75"として読み込まれます。書式文字列は "2"のみを扱うため、第2引数として表示される "75"は無視されます。

2.15は切り捨てられ、2.75は切り上げられます。

なぜ、「2.75」を「2」に切り上げると思いますか?それが本当に欲しいものなら、Math.Floor()メソッドを試してみてください。

3

小数点以下のすべての小数点以下の桁を取り除くために、あなたは数学のクラスの切捨て方法を使用する必要があります。

[Math]::Truncate(22/8) # result: 2 
[Math]::Truncate(-22/8) # result: -2 

これにより、正の数と負の数の両方で望ましい結果が得られます。

0

数学の方法は、はるか編好むされていますが、あなたはまた、文字列操作に頼ることができます。

PS> (22/8).ToString().Split('.')[0] 
2 
関連する問題