9

小数点第 3 位までの値を切り上げたい。常に UP 値を取り、四捨五入する必要があります。Math.Round を使用しましたが、期待どおりの結果が得られません。

シナリオ 1

var value1 = 2.526;
var result1 = Math.Round(value1, 2); //Expected: 2.53 //Actual: 2.53

シナリオ 2

var value2 = 2.524;
var result2 = Math.Round(value2, 2); //Expected: 2.53 //Actual: 2.52

シナリオ 1 は問題ありません。期待通りの結果を生み出しています。2 番目のシナリオでは、金額は 2.522 です。小数点第 3 位 (この場合は「4」) を考慮したいので、切り上げます。期待される結果は 2.53 です

小数点第 3 位が何であっても (5 未満か 5 より大きいかに関係なく)、常に切り上げる必要があります。

誰でも私に解決策を提供できますか? Math.Round がここで私を助けているとは思わない。

4

4 に答える 4

4

最後に、私は解決策を考え出します。以下のようにSinatrの答えを改善しました。

var value = 2.524;
var result = RoundUpValue(value, 2); // Answer is 2.53

public double RoundUpValue(double value, int decimalpoint)
{
    var result = Math.Round(value, decimalpoint);
    if (result < value)
    {
        result += Math.Pow(10, -decimalpoint);
    }
    return result;
}
于 2014-02-07T17:23:53.330 に答える
1

これはどうですか:

Math.Round(Value+0.005,2)
于 2014-02-06T09:47:50.760 に答える