Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写对称版本的捕捉到值公式(C#)_C#_Algorithm_Math_Equation - Fatal编程技术网

如何编写对称版本的捕捉到值公式(C#)

如何编写对称版本的捕捉到值公式(C#),c#,algorithm,math,equation,C#,Algorithm,Math,Equation,我想写一个组件,它可以将一个值向上移动一个增量,或者移动到最近的增量 假设增量为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()方法也会这样做,相反

我想写一个组件,它可以将一个值向上移动一个增量,或者移动到最近的增量

假设增量为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()方法也会这样做,相反

我提出了以下公式:

返回(值+增量)-(值%增量)

我原以为Down()方法会类似,但我找不到它是什么。我能让它工作的唯一方法是:

decimal mod = value % increment;

return mod != 0  ? value - mod : value - increment
当然,如果相反的操作是相同的,那么公式应该是相同的。

公式

value - Abs(value % increment) + Abs(increment/2) + increment/2
以值1.0006为例,增量为(+957;)0.0005

向上增量为+0.0005时

1.0006-0.0001+0.00025+0.00025 = 1.0010
向下增量为-0.0005时

1.0006-0.0001+0.00025-0.00025 = 1.0005
公式

value - Abs(value % increment) + Abs(increment/2) + increment/2
以值1.0006为例,增量为(+957;)0.0005

向上增量为+0.0005时

1.0006-0.0001+0.00025+0.00025 = 1.0010
向下增量为-0.0005时

1.0006-0.0001+0.00025-0.00025 = 1.0005

替换三元表达式<如果
inc
为负,则code>Math.Pow(signInc,2)-signInc)/2返回1,否则返回0
Math.Abs(数学符号(mod))
如果
mod
为0,则返回0,否则返回1;如果
inc<0&&mod!=0,否则为0



替换三元表达式<如果
inc
为负,则code>Math.Pow(signInc,2)-signInc)/2返回1,否则返回0
Math.Abs(数学符号(mod))
如果
mod
为0,则返回0,否则返回1;如果
inc<0&&mod!=0
和0,否则。

您可以创建一个枚举所有值的函数,并在上/下方向(您可以选择)简单地查找最接近给定值的值。您可以创建一个枚举所有值的函数,并在上/下方向(您可以选择)简单地查找最接近给定值的值。我假设
down(1.0006)
应该给出
1.0005
,而不是
1.0000
。我假设
Down(1.0006)
应该给出
1.0005
,而不是
1.0000
。这两种方法都适用,谢谢!有没有不使用三元运算符的方法?我只是好奇多于一切。看起来,如果三元数对Up不是必需的,那么对Down也应该是必需的?这两种方法都适用,谢谢!有没有不使用三元运算符的方法?我只是好奇多于一切。看起来,如果三元数对Up不是必需的,那么对Down也是必需的?