【问题标题】:Is there a way to show where a large number lies in a range of a smaller number?有没有办法显示一个大数字在一个较小数字的范围内?
【发布时间】:2020-03-02 01:29:17
【问题描述】:

我不太确定如何表达这个问题,但也许举个例子会有所帮助......

是否有一个运算符可以显示 25 在 1-7 的数字范围内的位置?

例如:

25/7 返回 4

21/7 返回 7

22/7 返回 1

4/7 返回 4

等等

代码示例:

var dayOfMonth: Int = 28

var aNumber: Int

aNumber = (dayOfMonth ) % 7

func dayOfTheWeek(day: Int) {

    switch day {
  case 0:
        print("Monday")
  case 1:
        print("Tuesday")
  case 2:
        print("Wednesday")
  case 3:
        print("Thursday")
  case 4:
        print("Friday")
  case 5:
        print("Saturday")
  case 6:
        print("Sunday")
    default:
        print("Error")
  }

}


dayOfTheWeek(day: aNumber)

【问题讨论】:

  • 请先尝试自己并分享代码,以便您获得更好的响应。
  • 你的目标是什么?您不需要手动枚举工作日,结果取决于您要计算的月份和年份。您可以使用日历 weekdaySymbols Calendar.current.weekdaySymbols[weekday-1] stackoverflow.com/a/49042360/2303865

标签: swift operators


【解决方案1】:

我认为您正在寻找 modulo operator,在 Swift 中拼写为 %。区别在于21 % 70,而不是7

m % n可以认为是“m除以n的余数”

【讨论】:

  • 啊,我是如此接近。我实际上是在使用模数,但我自己并不能完全做到。我要做的是输入月份中的哪一天,然后让代码找出星期几。如果我使用模数,它会减 1(例如,我需要 1 来对应我的 switch 语句中的“星期一”,但它总是余数为 0)意识到我可以将所有 switch case 语句减 1 来解决这个问题.抱歉,为了简单起见,但非常感谢您的回复!
  • @Z400Racer37 你应该提到这种背景和过去的尝试,否则我们只是在黑暗中射击。这样你会得到更多的回应,而且它们会更好,更贴近你的实际工作。
  • @Z400Racer37 另外,你为什么要手动滚动这个?你为什么不直接使用DateFormatter(如果你想要名字,比如“sunday”)或DateComponents(如果你想要一周中的天数,用于其他类型的计算)? gist.github.com/amomchilov/5bdd9a12c9db4ab9cfbb1eebc95119f1
  • @Z400Racer37 您可以通过从被除数中减去一个值并将其加回余数来移动模运算符的输出;例如(day - 1) % 7 + 1[1, 7] 范围内生成一个数字,而不是[0, 6]。对于这种情况,这是一个很好的“技巧”,即使在您的情况下它并不是真正必要的。
  • @Z400Racer37 在你的情况下,是的,只是重新编号会更好。虽然这是了解基础等各种格式化程序的好机会。 DateFormatter 只是其中之一。它可以让您以多种不同的组合(短格式、长格式、拼写、数字、用 0 填充的数字等)打印日期的所有不同部分(年、月、日、星期、小时、分钟)。 )。它真的很灵活。但最重要的是,它默认为“做所写”,这对非英语用户至关重要。
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
相关资源
最近更新 更多