如何在范围内得到给定数字的最小值和范围最小/最大增量

我有一个按80步递增的范围。例如,min_1 = 0 max_1 = 80,min_2 = 80 max_2 = 160等。现在假设我有一个数字,对于情况一是n_1 = 47,对于情况二是n_2 = 111。对于这两种情况,每个数字都落在一个单独的递增范围内。是否有一种简单的方法来确定每个数字的范围最小值?对于情况一,范围的最小值将是0,对于情况二,它将是80

如果这很简单,请原谅我,但我很难弄清楚。谢谢任何帮助!另外,我使用Lua,如果有人想要在其中输入答案,但这并不重要。

点赞
用户844416
用户844416

使用 整数模 运算符的解决方案:

 low_end_of_range = value - (value % 80)

(Lua 不确定是否适用)也可以使用 整数除法div, //)运算符:

 low_end_of_range = (value div 80) * 80
2018-08-05 07:50:18
用户8076767
用户8076767

你可以使用math.floor()函数来实现这个功能。让我解释一下。

首先,看一下以下计算:

  • 47/80 = 0.5875
  • 111/80 = 1.3875
  • 163/80 = 2.0375

如果你可以将这些数字向下舍入,那么你将得到分别是 0, 12。你可以将这些数字分别乘以 80,结果分别为 080160

那么,如何实现这种向下舍入?你可以使用math.floor()

number = math.floor(56.87)
print(number) --输出56

把这些东西放在一起,你的代码看起来会像这样:

number = 111
increment = 80

min_range = math.floor(number/increment) * increment

这实际上是一个常见的问题:例如,如何将一个数字舍入到最近的十位或千位?你只需要找到它的"最小范围",给定增量.1(十位)或1000(千位)。

还有另一个舍入的函数,叫做math.ceil()。它们被称为math.floor()math.ceil,因为向下舍入就像"地板"数字,而向上舍入就像"天花板"数字。

2018-08-05 11:54:12