2016-06-30 23 views
1

小数点以下4桁まで切り上げる必要があります。10進数を指定した桁数に丸める方法は?

public static decimal RoundUp(this decimal input, int places) 
    { 
     decimal multiplier = Convert.ToDecimal(Math.Pow(10, Convert.ToDouble(places))); 
     return Math.Ceiling(input * multiplier)/multiplier; 
    } 

1.1234に数1.12333を切り上げます(予想通り)が、1.123304は1.1233に切り上げされ、私はそれがあまりにも1.1234する必要があります:メソッドがあるため

This answerは、役に立ちません。

+3

ですが、「1.123300」の場合は「1.1233」ですか? –

+0

丸め前の元の入力番号に0.5を加えるだけでよいと思います。 – AnthonyLambert

+0

[C#で小数点以下2桁まで切り上げる]の複製があります(http://stackoverflow.com/questions/7075201/rounding-up-to-2-decimal-places-in-c-sharp) – alegz

答えて

1

投稿したメソッドは機能します。たぶん、間違ったデータ型で作業しているか、考えている値と異なる値を持つ可能性があります。サンプルコード:

RoundUp(1.123304M, 4) // 1.1234 

注リテラルの後M - これは文字通りのではなく、二重の小数として数を表します。しかし、私が何をしていても、あなたの結果を複製することはできないので、あなたが持っていると思う価値がない可能性が最も高いです。すべてを小数点以下にしておけば、大丈夫です。 placesの値が大きい場合は、Math.Pow関数を作成するか、実際に使用している値(例:10000など)のクイックルックアップテーブルを作成する必要があります。

+0

あなたは正しいですが、できます。私は間違いをしたにちがいありません。この質問を削除する方法はありますか? – alegz

+0

タグの直下には、 'delete'リンクがあります(悲しいことに、*リンク*にはならない* UXの"悪いこと " )。 – Luaan

関連する問題