怎样从一个数字中获取前两个数字?

我需要编写一段代码,当输入一个年份时,它能够告诉你这是哪个世纪。我有以下代码:

local kata = {}

function kata.century(number)
  if number%100 == 0 then >我需要获得前两个数字
    return
  else
    return number/100 + 1
  end
end

return kata

实际上,我需要一行代码能获取像“1700”和“2000”这样年份的前两个数字, 这样我就可以将它们除以100并加上1。(我是新手)

点赞
用户107090
用户107090

在 Lua 5.3+ 中使用 number//100

对于早期版本,请使用 math.floor(number/100)

2020-04-08 12:30:33
用户6879826
用户6879826

根据公历规定,公元1年被认为是公元1世纪的第一年。由于一个世纪是100年,这意味着公元纪元的任何一个世纪的第一年都以数字1结尾;因此,2000年是20世纪的最后一年,2001年是21世纪的第一年。

仅根据年份的前两个数字无法使用这种严格正确的识别方法来确定世纪。取2000的前两个数字并加1将得到21世纪。但是,可以使用math.ceil而不是使用math.floor截断除以10的结果来获得大于该除法结果的最小整数。

function century (year)
  return math.ceil(year / 100)
end

这个century函数给出了公元纪元下年份的正确世纪:

> century(1)
1
> century(100)
1
> century(101)
2
> century(2000)
20
> century(2001)
21

在通用用法中,存在一种约定,即世纪应该基于共享数字而不是基于公历进行编号。在这种用法中,以20开头的所有年份都属于21世纪,使2000年成为21世纪的第一年。由于公历没有0年,这意味着1世纪(根据这种约定,在1年至99年之间)为99年,但公元纪元中的所有其他世纪都为100年(例如,100年至199年)。使用这种约定从年份中找出世纪可以通过将年份除以100并取结果的最小整数来完成。

如果目标是匹配流行预期并遵循通常的世纪编号的一般误解,则使用floor方法。但是,如果目标是基于公历获取正确和一致的世纪编号,则使用ceiling方法。

2020-08-23 15:02:18