2012-04-17 6 views
1

可能な重複トリミング:私は153.2154879ようなもので構成されたフロートを持っている場合は、文字列に変換する方法がある
Leave only two decimal places after the dot
Formatting a float to 2 decimal placesはフロート

をだけ小数点以下4桁を表示しますか?私は"000.000"を使用してフォーマットすることができますが、フロント番号は常に3桁でなければなりません。だから、すべての正面番号(153)を表示する方法はありますが、文字列の中のポイントの後の最初の4文字だけを表示しますか?

+0

可能な複製:http://stackoverflow.com/q/1291483/962091 – zackdever

答えて

6

私は通常"#0.0000"のようなフォーマット文字列を使用します。このような

+0

したがって、 '#'はすべての文字を表示するという意味ですか?この感謝を知らなかった! – TheGateKeeper

+0

-1。浮動小数点数を文字列に変換した後、浮動小数点数に丸めて戻す**意味がありません。 – Aliostad

+0

なぜあなたはAliostadみんなをdownvotingしていますか?私は小数点以下4桁を表示したいと明確に述べました。私はそれを丸めて浮動小数点に戻したいとは決して言いませんでした! – TheGateKeeper

6

何かが行う必要があります。

your_number.ToString("0.####"); 

これは、小数点以下4桁のmaxが表示されます。

+0

'your_number.ToString(" 0。#### ")'はより効率的で、文化に敏感な過負荷を提供します。 – phoog

+0

-1。浮動小数点数を文字列に変換した後、浮動小数点数に丸めて戻す**意味がありません。 – Aliostad

+0

@Aliostadの丸めと切り捨ては2つの異なるものです。小数点以下4桁までの数値の書式設定は四捨五入されません。私はphoogで提案されているように、より効率的なアプローチを含めるように答えを更新しました。 – Icarus

4

C#関数Math.Round関数を使用できます。

float a= 153.213456; Math.Round(a,3); これは、文字列に変換し得る153.213 に数値を切り上げます。

+0

文字列書式設定コードは、数値を再び丸めます。 Math.Roundを最初に呼び出す理由はありません。 – phoog

+0

@phoog浮動小数点数を文字列に変換して浮動小数点に変換し、浮動小数点用に設計されたRoundを使用しないことを意味しますか? – Aliostad

+0

@Aliostadはもちろんありません!問題は、指定された小数点以下の桁数を持つ文字列*に変換することを意味するfloatを*表示することです。つまり、表示のために数値を書式化する目的で 'Round'を使うのは非効率です* IEEE単精度バイナリ形式の丸められた' float'を必要とするならば、もちろん記憶や計算のためには「ラウンド」を使用します。 – phoog