2012-09-06 11 views
7

小数点以下2桁まで四捨五入する必要があります。したがって、1.401は1.40に丸めるが、Math.Round(value, 2)は1.4に丸める。末尾のゼロを保持しないMath.Round

後続ゼロを強制するにはどうすればよいですか?

答えて

17

1.41.40と同じです - あなただけ違っそれを表示したいです。 ToStringを呼び出すときに書式文字列を使用してください - value.ToString("0.00")

+0

修正。私はそれを違ったものにしたい。ありがとう! – Blade3

12

1.4 == 1.40数字が表示されるのは、末尾に0が必要なときだけです。それを文字列にフォーマットします。

.ToString("N2"); 
5

のように末尾のゼロは、値の問題よりも、フォーマットの詳細ですので、末尾のゼロは単なるプレゼンテーションで

foo.ToString("0.00") 
2

を使用しています。数学的には、1.401.4は同等です。小数点以下2桁とそれを提示する代わりに、書式設定

用途:

String.Format("{0:0.00}", 1.4); 

or 

yourNumber.ToString("0.00"); 
1

それは数(ダブル?)なので、それは末尾のゼロを持っていない - あなたはそれをテキストにするために持っている力末尾のゼロ。

2

これは古い質問ですが、誰かを助けるかもしれません!

私は、c#xmlクラスを使用してデータを生成し、xmlにシリアル化しています。値の1つはdoubleです。値に '7'を割り当てると、実際に '7.00'が必要なときに '7'にシリアル化されます。このラウンド最も簡単な方法は何をするだけだった。

foo = doubleValue + 0.00M 

をそして、それは代わりに、これは戻ってそれを解析し、その後ToStringメソッドをやって、その後、良好であっただけで7思想の値7.00になります。

0

小数点以下を使用するかどうかに関係します。

内部ながらMath.Round()も、メモリが

だからもし、すべての後続のゼロを削除するには、自動的原因にdoubleとして保存されていることを、ダブル、まだ事実上​​の末尾のゼロを維持する(Source Codeからそれが表示されます)テールゼロを必要とする場合は、文字列表示関数を使用して他の人が回答したときにフォーマットするか、小数点として元の値を渡すようにしてください(Decimal.Math.Roundは小数点のみを扱います)。結果をdoubleにキャストしないようにし、double変数に保存しないようにします。

同様に小数点があり、末尾のゼロを必要としない場合は、それをダブルにキャストします(入力をMath.Roundにキャストするか、その結果のどこかに限ります)それはダブルになっています)。