【发布时间】:2013-09-20 07:18:05
【问题描述】:
我想写一个组件,它可以将一个值向上移动一个增量,或者移动到最近的增量。
假设增量为 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
当然,如果反过来操作相同,那么公式应该是相同的。
【问题讨论】:
-
您可以创建一个函数,该函数枚举了所有值,并在向上/向下方向(您可以选择)上找到最接近给定值的函数。
标签: c# algorithm math equation