値をインクリメント量だけ上に移動するか、最も近いインクリメントに移動できるコンポーネントを書きたいと思います。
増分が 0.0005 であると仮定すると、Up() メソッドの予想される入力と出力は次のようになります。
- 1.0005 -> 1.0010 (インクリメント時なのでインクリメントで移動)
- 1.0006 -> 1.0010 (増分ではないため、増分に移動)
- 1.0007 -> 1.0010
- 1.0008 -> 1.0010
- 1.0009 -> 1.0010
- 1.0010 -> 1.0015 (インクリメント時なのでインクリメントで移動)
- 1.0011 -> 1.0015
- 1.0012 -> 1.0015
- 等
そして、Down() メソッドは同じことを逆に行います。
私はこの式を思いついた:
return (value + increment) - (value % increment);
Down() メソッドも似ていると思っていましたが、それが何であるかわかりません。私がそれを機能させることができた唯一の方法は、次のことです。
decimal mod = value % increment;
return mod != 0 ? value - mod : value - increment
確かに逆の操作が同じなら、式も同じはずです。