【问题标题】:How does modulus work exactly? [duplicate]模数是如何工作的? [复制]
【发布时间】:2011-07-28 11:55:05
【问题描述】:

我知道模数 (%) 的作用,它会给你余数。但它是如何做到的呢? 我看到它使用公式:模数=被除数-(除数/除数)*除数 10%3 应该给你 1(10 是除数,3 是除数) 论坛给出:10-(10/3)*3 = 10-10 = 0 这显然是错误的。

再一次,使用纯变量,除数 - (除数/除数)*除数=除数-除数=0

我在这里做错了什么? (另外,公式来自 JASS 的母语,魔兽争霸 3 游戏中使用的语言)

【问题讨论】:

  • 另见here
  • 您忘记了 (10/3) 会向 0 截断。结果是3,而不是3.3333333...所以:10-(10/3)*3 = 10-(3)*3 = 10-9 = 1

标签: math division modulo


【解决方案1】:

在公式中(dividend / divisor) 是一个整数除法,计算结果为整数。

所以,10-(10/3)*3 = 10 - 9 = 1

【讨论】:

  • 感谢您的快速回答 ^^ 这越来越令人沮丧,因为无论我将它放入计算器多少次,它都给了我 0 xD
【解决方案2】:

在许多使用 C、C++、Java 等的编程语言中,10/3 将导致 3,因为除法实际上是整数除法,小数部分被截断。

所以,换句话说,n/d 只给你商。

现在,通过算术我们知道任何正整数 n 和任何正整数除数 d, n 都可以表示为:n = q*d + r。如果 0 ≤ r

在这些编程语言中,n/d 为您提供 q。

所以,n - (n/d)*d = n - q*d = r,余数。

【讨论】:

  • 哦哇谢谢xD没想到
猜你喜欢
  • 2023-03-25
  • 2016-12-24
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 2016-01-19
  • 2014-08-25
  • 2011-10-02
相关资源
最近更新 更多