我想编写一个组件,它可以将值向上移动一个增量,或者移动到最近的增量。
假设增量为 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
- ETC
Down() 方法也会做同样的事情,相反。
我想出了这个公式:
return (value + increment) - (value % increment);
我预计 Down() 方法会相似,但我找不到它是什么。我能够让它工作的唯一方法是:
decimal mod = value % increment;
return mod != 0 ? value - mod : value - increment
当然,如果反向操作相同,那么公式应该相同。