3

MidpointRounding.AwayFromZero と MidpointRounding.ToEven については知っていますが、その間に何かが必要だと思います。これはプロモーション モジュール用であるため、値が 0.5 の場合は割引価格を切り捨てる必要があります。

たとえば、次のようにします。

£1.244 から £1.24 に丸める
£1.245 から £1.24 に丸める
£1.246 から £1.25 に丸める

私が理解しているように、.AwayFromZero は中央値を 1.25 ポンドに丸め、.ToEven は 1.24 ポンドに正しく丸めますが、1.335 は私が望む 1.33 ポンドではなく 1.34 ポンドに丸められます。

これを達成する方法を知っている人はいますか?

ありがとう、ジョン

4

3 に答える 3

3

不特定行動が多い。これはお金に関するものなので、マイナスを無視して、安全に保ち、丸めを明示的に行いましょう。

    public static decimal Promotion(decimal value) {
        decimal unround = decimal.Floor(value * 100m);
        decimal fraction = value * 100m - unround;
        if (fraction <= 0.5m) return unround / 100m;
        else return (unround + 1m) / 100m;
    }
于 2012-10-01T20:50:54.083 に答える
2
Math.ceiling(x - 0.5)

トリックを行う必要があります。

于 2012-10-01T20:03:41.157 に答える
0

通常、このようなことを行うには、値から .001 を減算してから、通常どおりに丸めます。

1.244 - .001 = 1.243 = 1.24
1.245 - .001 = 1.244 = 1.24
1.246 - .001 = 1.245 = 1.25

1.300 - .001 = 1.299 = 1.3

この場合、これを独自の関数/拡張メソッドに入れ、丸めの前に.001を減算する理由を関数で文書化する必要があります。

于 2012-10-01T20:00:29.500 に答える