อะไร%
ในการคำนวณหรือไม่? ฉันดูเหมือนจะไม่สามารถคิดออกว่ามันทำอะไร
มันคำนวณเปอร์เซ็นต์ของการคำนวณเช่น: 4 % 2
เท่ากับ 0 ได้อย่างไร
อะไร%
ในการคำนวณหรือไม่? ฉันดูเหมือนจะไม่สามารถคิดออกว่ามันทำอะไร
มันคำนวณเปอร์เซ็นต์ของการคำนวณเช่น: 4 % 2
เท่ากับ 0 ได้อย่างไร
คำตอบ:
โอเปอเรเตอร์% (modulo) ให้ผลที่เหลือจากการหารอาร์กิวเมนต์แรกด้วยวินาที อาร์กิวเมนต์ที่เป็นตัวเลขจะถูกแปลงเป็นประเภททั่วไปก่อน อาร์กิวเมนต์ด้านขวาเป็นศูนย์ยกข้อยกเว้น ZeroDivisionError อาร์กิวเมนต์อาจเป็นตัวเลขทศนิยมเช่น 3.14% 0.7 เท่ากับ 0.34 (ตั้งแต่ 3.14 เท่ากับ 4 * 0.7 + 0.34) ตัวดำเนินการแบบโมดูโลให้ผลลัพธ์ที่มีเครื่องหมายเดียวกับตัวถูกดำเนินการตัวที่สอง (หรือศูนย์) ค่าสัมบูรณ์ของผลลัพธ์นั้นเล็กกว่าค่าสัมบูรณ์ของตัวถูกดำเนินการที่สอง [2]
นำมาจากhttp://docs.python.org/reference/expressions.html
ตัวอย่างที่ 1:
6%2
ประเมินเป็น0
เพราะไม่มีเศษเหลือหาก 6 หารด้วย 2 (3 ครั้ง)
ตัวอย่างที่ 2 : 7%2
ประเมินค่า1
เนื่องจากมีส่วนที่เหลือ1
เมื่อ 7 ถูกหารด้วย 2 (3 ครั้ง)
ดังนั้นเพื่อสรุปว่าจะส่งคืนส่วนที่เหลือของการดำเนินการหารหรือ0
ถ้าไม่มีส่วนที่เหลือ ดังนั้น6%2
วิธีการหาที่เหลือของ 6 หารด้วย 2
-11%5 = 4
ไหมว่าทำไม
ค่อนข้างปิดหัวข้อ%
นอกจากนี้ยังใช้ในการดำเนินการจัดรูปแบบสตริงต้องการ%=
แทนที่ค่าลงในสตริง:
>>> x = 'abc_%(key)s_'
>>> x %= {'key':'value'}
>>> x
'abc_value_'
อีกครั้งนอกหัวข้อ แต่ดูเหมือนจะเป็นคุณลักษณะที่บันทึกไว้เล็กน้อยซึ่งพาฉันไปชั่วขณะหนึ่งเพื่อติดตามและฉันคิดว่ามันเกี่ยวข้องกับการคำนวณแบบ Pythons modulo ซึ่งหน้า SO อันดับนี้สูง
%=
ไม่ปรากฏที่หน้านั้น
%
ผู้ประกอบการได้รับเลือกเพราะมันสะท้อนเปอร์เซ็นต์ตัวระบุที่ใช้ภายในสตริง
นิพจน์เช่นx % y
ประเมินไปยังส่วนที่เหลือของx ÷ y
- ดีในทางเทคนิคมันเป็น "โมดูลัส" แทน "เตือน" ดังนั้นผลลัพธ์อาจแตกต่างกันถ้าคุณกำลังเปรียบเทียบกับภาษาอื่น ๆ ที่%
เป็นผู้ประกอบการที่เหลือ มีความแตกต่างเล็กน้อยบางอย่าง (ถ้าคุณสนใจในผลที่เกิดขึ้นจริงโปรดดูที่ "ทำไมชั้นของ Integer Division Python" ร้อง)
ลำดับความสำคัญเหมือนกันกับตัวดำเนินการ/
(การหาร) และ*
(การคูณ)
>>> 9 / 2
4
>>> 9 % 2
1
Python gotcha : ขึ้นอยู่กับเวอร์ชันของ Python ที่คุณใช้%
เป็นตัวดำเนินการสอดแทรกสตริง (คัดค้าน) ดังนั้นโปรดระวังถ้าคุณมาจากภาษาที่มีการคัดเลือกประเภทอัตโนมัติ (เช่น PHP หรือ JS) ซึ่งนิพจน์เช่น'12' % 2 + 3
นั้นถูกต้อง: ใน งูหลามมันจะส่งผลTypeError: not all arguments converted during string formatting
ซึ่งอาจจะค่อนข้างสับสนสำหรับคุณ
[อัพเดตสำหรับ Python 3]
ความคิดเห็นของผู้ใช้ n00p:
9/2 คือ 4.5 ในหลาม คุณต้องทำหารจำนวนเต็มเช่น: 9 // 2 ถ้าคุณต้องการให้ไพ ธ อนบอกคุณว่ามีวัตถุทั้งหมดเหลืออยู่หลังจากการหาร (4)
เพื่อความแม่นยำการหารด้วยจำนวนเต็มเคยเป็นค่าเริ่มต้นใน Python 2 (โปรดทราบว่าคำตอบนี้เก่ากว่าเด็กผู้ชายของฉันที่อยู่ในโรงเรียนแล้วและตอนที่ 2.x เป็นกระแสหลัก):
$ python2.7
Python 2.7.10 (default, Oct 6 2017, 22:29:07)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4
>>> 9 // 2
4
>>> 9 % 2
1
ใน9 / 2
ผลลัพธ์ของPython ที่ทันสมัย4.5
:
$ python3.6
Python 3.6.1 (default, Apr 27 2017, 00:15:59)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 9 / 2
4.5
>>> 9 // 2
4
>>> 9 % 2
1
[อัพเดต]
ผู้ใช้ dahiya_boy ถามในเซสชั่นความคิดเห็น:
Q.คุณช่วยอธิบายได้
-11 % 5 = 4
ไหมว่าทำไม- dahiya_boy
นี่มันแปลกจริงไหม? หากคุณลองใน JavaScript:
> -11 % 5
-1
นี่เป็นเพราะใน JavaScript %
เป็นตัวดำเนินการ "ที่เหลืออยู่" ในขณะที่ใน Python มันเป็นตัวดำเนินการ "โมดูลัส" (นาฬิกาคณิตศาสตร์)
คุณสามารถรับคำอธิบายได้โดยตรงจาก GvR :
แก้ไข - dahiya_boy
ใน Java และ iOS ในขณะที่ในหลามและทับทิม-11 % 5 = -1
-11 % 5 = 4
เหตุผลครึ่งหนึ่งนั้นอธิบายไว้โดยเปาลาสการ์ดีนและคำอธิบายที่เหลืออยู่ที่นี่
ใน Java และ iOS %
จะช่วยให้ส่วนที่เหลือซึ่งหมายความว่าถ้าคุณแบ่ง11% 5 ให้Quotient = 2 and remainder = 1
และ-11% 5Quotient = -2 and remainder = -1
ให้
โค้ดตัวอย่างใน swift iOS
แต่เมื่อเราพูดถึงไพ ธ อนมันให้โมดูลัสของนาฬิกา และใช้งานได้กับสูตรด้านล่าง
mod(a,n) = a - {n * Floor(a/n)}
นั่นหมายความว่า
mod(11,5) = 11 - {5 * Floor(11/5)} => 11 - {5 * 2}
ดังนั้น, mod(11,5) = 1
และ
mod(-11,5) = -11 - 5 * Floor(11/5) => -11 - {5 * (-3)}
ดังนั้น, mod(-11,5) = 4
โค้ดตัวอย่างใน python 3.0
ทำไมต้องเป็น Integer Division Python
ฉันถูกถาม (อีกครั้ง) ในวันนี้เพื่ออธิบายว่าทำไมการหารจำนวนเต็มใน Python ส่งคืนพื้นของผลลัพธ์แทนที่จะตัดให้เป็นศูนย์เช่น C
สำหรับตัวเลขบวกไม่มีความประหลาดใจ:
>>> 5//2
2
แต่ถ้าตัวถูกดำเนินการตัวใดตัวหนึ่งเป็นลบผลลัพธ์จะถูกปูพื้นเช่นถูกปัดเศษจากศูนย์ (ไปทางอนันต์ลบ):
>>> -5//2
-3
>>> 5//-2
-3
สิ่งนี้รบกวนบางคน แต่มีเหตุผลทางคณิตศาสตร์ที่ดี การดำเนินการหารจำนวนเต็ม (//) และพี่น้องของมัน, การดำเนินการ modulo (%), ไปด้วยกันและตอบสนองความสัมพันธ์ทางคณิตศาสตร์ที่ดี (ตัวแปรทั้งหมดเป็นจำนวนเต็ม):
a/b = q with remainder r
ดังนั้น
b*q + r = a and 0 <= r < b
(สมมติว่า a และ b เป็น> = 0)
หากคุณต้องการให้ความสัมพันธ์ขยายออกไปเป็นลบ a (ทำให้ b เป็นบวก) คุณมีสองทางเลือก: ถ้าคุณตัด q เป็นศูนย์ r จะกลายเป็นลบดังนั้นค่าคงที่จะเปลี่ยนเป็น 0 <= abs (r) <ไม่เช่นนั้นคุณ สามารถวาง q ไปทางอนันต์เชิงลบได้และค่าคงที่จะเป็น 0 <= r <b [อัพเดท: แก้ไขย่อหน้านี้]
ในทฤษฎีจำนวนคณิตศาสตร์นักคณิตศาสตร์มักชอบตัวเลือกหลัง (ดูเช่นWikipedia ) สำหรับ Python ฉันเลือกได้เหมือนกันเพราะมีบางแอปพลิเคชั่นที่น่าสนใจของการดำเนินการแบบโมดูโลโดยที่สัญลักษณ์ของ a นั้นไม่น่าสนใจ ลองพิจารณาการประทับเวลา POSIX (วินาทีนับตั้งแต่จุดเริ่มต้นของปี 1970) และเปลี่ยนเป็นเวลาของวัน เนื่องจากมี 24 * 3600 = 86400 วินาทีในหนึ่งวันการคำนวณนี้เป็นเพียง% 86400 แต่ถ้าเราต้องแสดงเวลาก่อนปี 1970 โดยใช้ตัวเลขติดลบกฎ "การตัดปลายสู่ศูนย์" จะให้ผลลัพธ์ที่ไร้ความหมาย! ใช้กฎพื้นมันทั้งหมดทำงานได้ดี
แอปพลิเคชันอื่นที่ฉันคิดว่าเป็นการคำนวณตำแหน่งพิกเซลในคอมพิวเตอร์กราฟิก ฉันแน่ใจว่ามีมากขึ้น
สำหรับด้านลบ b โดยวิธีการทุกอย่างเพียงแค่พลิกและค่าคงที่กลายเป็น:
0 >= r > b.
เหตุใด C จึงไม่ทำเช่นนี้ อาจเป็นไปได้ว่าฮาร์ดแวร์ไม่ได้ทำในขณะที่ C ได้รับการออกแบบ และฮาร์ดแวร์อาจไม่ได้ทำเช่นนี้เพราะในฮาร์ดแวร์ที่เก่าแก่ที่สุดตัวเลขลบถูกแสดงว่าเป็น "เครื่องหมาย + ขนาด" แทนที่จะแสดงส่วนประกอบของทั้งสองใช้วันนี้ (อย่างน้อยสำหรับจำนวนเต็ม) คอมพิวเตอร์เครื่องแรกของฉันคือเมนเฟรมข้อมูลควบคุมและใช้ส่วนประกอบหนึ่งอย่างสำหรับจำนวนเต็มและลอย รูปแบบของ 60 รายการหมายถึงศูนย์ลบ!
ทิมปีเตอร์สใครจะรู้ว่าฝังโครงกระดูกจุดของไพ ธ อนไว้ที่ไหนแสดงความกังวลเกี่ยวกับความปรารถนาของฉันที่จะขยายกฎเหล่านี้ไปยังโมดูโลจุดลอย เขาอาจพูดถูก กฎที่ถูกตัดทอนไปทางลบจะทำให้สูญเสียความแม่นยำสำหรับ x% 1.0 เมื่อ x เป็นจำนวนลบที่น้อยมาก แต่นั่นไม่เพียงพอสำหรับฉันที่จะทำลายโมดูโลจำนวนเต็มและ // เป็นคู่ที่แน่นแฟ้น
PS โปรดทราบว่าฉันใช้ // แทน / - นี่คือไวยากรณ์ Python 3 และอนุญาตให้ใช้ใน Python 2 เพื่อเน้นว่าคุณรู้ว่าคุณกำลังเรียกใช้การหารจำนวนเต็ม / โอเปอเรเตอร์ใน Python 2 นั้นคลุมเครือเนื่องจากมันจะส่งกลับผลลัพธ์ที่แตกต่างกันสำหรับตัวถูกดำเนินการจำนวนเต็มสองตัวสำหรับแบบ int และแบบ float หรือแบบลอยสองแบบ แต่นั่นเป็นเรื่องที่แยกจากกันโดยสิ้นเชิง ดู PEP 238
โพสต์โดย Guido van Rossum เวลา 9:49 น
help(divmod)
q, r = divmod(x y) <==> q*y + r == x
โมดูลัสคือการดำเนินการทางคณิตศาสตร์บางครั้งอธิบายว่า "นาฬิกาเลขคณิต" ฉันพบว่าการอธิบายว่ามันเป็นเพียงเศษเสี้ยวที่ทำให้เข้าใจผิดและสับสนเพราะปกปิดเหตุผลที่ใช้ในวิทยาศาสตร์คอมพิวเตอร์ มันถูกใช้เพื่อพันรอบ ๆ
คิดว่าเป็นนาฬิกา: สมมติว่าคุณดูนาฬิกาในเวลา "ทหาร" ซึ่งช่วงเวลาเริ่มตั้งแต่ 0:00 - 23.59 ตอนนี้ถ้าคุณต้องการบางสิ่งบางอย่างเกิดขึ้นทุกวันเวลาเที่ยงคืนคุณต้องการให้เวลาปัจจุบัน mod 24 เป็นศูนย์:
ถ้า (ชั่วโมง% 24 == 0):
คุณสามารถคิดถึงชั่วโมงทั้งหมดในการพันรอบประวัติศาสตร์เป็นวงกลม 24 ชั่วโมงขึ้นไปและชั่วโมงปัจจุบันของวันนี้คือ mod number ที่ไม่มีที่สิ้นสุดนาน 24 มันเป็นแนวคิดที่ลึกซึ้งยิ่งกว่าส่วนที่เหลือมันเป็นวิธีทางคณิตศาสตร์ เพื่อจัดการกับรอบและเป็นสิ่งสำคัญมากในวิทยาการคอมพิวเตอร์ นอกจากนี้ยังใช้ล้อมรอบอาร์เรย์ช่วยให้คุณสามารถเพิ่มดัชนีและใช้โมดูลัสเพื่อตัดกลับไปที่จุดเริ่มต้นหลังจากที่คุณไปถึงจุดสิ้นสุดของอาร์เรย์
a % b = a - b * floor(a/b)
Python - ผู้ประกอบการพื้นฐาน
http://www.tutorialspoint.com/python/python_basic_operators.htm
โมดูลัส - แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวาและผลตอบแทนที่เหลือ
a = 10 และ b = 20
b% a = 0
% ผู้ประกอบการ Modulo ยังสามารถใช้สำหรับการพิมพ์สตริง (เช่นเดียวกับใน C) ตามที่กำหนดไว้ใน Google https://developers.google.com/edu/python/strings
# % operator
text = "%d little pigs come out or I'll %s and %s and %s" % (3, 'huff', 'puff', 'blow down')
ดูเหมือนว่าจะปิดหัวข้อนี้ แต่แน่นอนว่ามันจะช่วยให้ใครบางคน
x % y
คำนวณที่เหลือของการแบ่งx
หารด้วยy
ที่หารเป็นจำนวนเต็ม y
ส่วนที่เหลือมีสัญลักษณ์ของ
บน Python 3 การคำนวณจะให้ผล6.75
; นี่เป็นเพราะการ/
แบ่งเป็นจริงไม่ใช่การหารจำนวนเต็มเช่น (โดยค่าเริ่มต้น) บน Python 2 บน Python 2 1 / 4
จะให้ 0 เนื่องจากผลลัพธ์จะถูกปัดเศษลง
การแบ่งจำนวนเต็มสามารถทำได้บน Python 3 ด้วย//
ตัวดำเนินการดังนั้นเมื่อต้องการรับผลลัพธ์ 7 คุณสามารถดำเนินการได้:
3 + 2 + 1 - 5 + 4 % 2 - 1 // 4 + 6
นอกจากนี้คุณยังสามารถแบ่งสไตล์ Python บน Python 2 เพียงแค่เพิ่มบรรทัด
from __future__ import division
เป็นบรรทัดซอร์สโค้ดแรกในไฟล์ต้นฉบับแต่ละไฟล์
#
สำหรับการแสดงความคิดเห็นและ//
เป็นผู้ดำเนินการ
ตัวดำเนินการโมดูลัสนั้นจะใช้สำหรับการแบ่งส่วนที่เหลือในจำนวนเต็มโดยทั่วไป แต่ใน Python สามารถใช้สำหรับจำนวนจุดลอยตัว
http://docs.python.org/reference/expressions.html
โอเปอเรเตอร์% (modulo) ให้ผลที่เหลือจากการหารอาร์กิวเมนต์แรกด้วยวินาที อาร์กิวเมนต์ที่เป็นตัวเลขจะถูกแปลงเป็นประเภททั่วไปก่อน อาร์กิวเมนต์ด้านขวาเป็นศูนย์ยกข้อยกเว้น ZeroDivisionError อาร์กิวเมนต์อาจเป็นตัวเลขทศนิยมเช่น 3.14% 0.7 เท่ากับ 0.34 (ตั้งแต่ 3.14 เท่ากับ 4 * 0.7 + 0.34) ตัวดำเนินการแบบโมดูโลให้ผลลัพธ์ที่มีเครื่องหมายเดียวกับตัวถูกดำเนินการตัวที่สอง (หรือศูนย์) ค่าสัมบูรณ์ของผลลัพธ์นั้นเล็กกว่าค่าสัมบูรณ์ของตัวถูกดำเนินการที่สอง [2]
มันเป็นมอดุโลยกเว้นเมื่อมันเป็นผู้ประกอบการสตริง C-รูปแบบการจัดรูปแบบเก่าไม่ได้เป็นมอดุโล ดูรายละเอียดที่นี่ คุณจะเห็นสิ่งนี้มากมายในรหัสที่มีอยู่
นอกจากนี้ยังมีฟังก์ชั่นในตัวที่มีประโยชน์ที่เรียกว่าdivmod
:
divmod (a, b)
ใช้ตัวเลขสองตัว (ไม่ซับซ้อน) เป็นอาร์กิวเมนต์และส่งกลับตัวเลขที่ประกอบด้วยความฉลาดและส่วนที่เหลือเมื่อใช้การหารแบบยาว
ระวังตัวด้วย
(3 +2 + 1 - 5) + (4 % 2) - (1/4) + 6
แม้ในวงเล็บจะให้ผลลัพธ์เป็น 6.75 แทนที่จะเป็น 7 หากคำนวณใน Python 3.4
และตัวดำเนินการ '/' นั้นไม่ใช่เรื่องง่ายที่จะเข้าใจเช่นกัน (python2.7): ลอง ...
- 1/4
1 - 1/4
นี่เป็นหัวข้อนอกเรื่องเล็กน้อยที่นี่ แต่ควรพิจารณาเมื่อประเมินนิพจน์ด้านบน :)
(1)+(0)-(0.25)+(6)
ของ
มันยากสำหรับฉันที่จะหากรณีการใช้งานเฉพาะสำหรับการใช้งาน% ออนไลน์ได้อย่างง่ายดายเช่นทำไมการทำโมดูลัสเศษส่วนหรือการหารโมดูลัสเชิงลบส่งผลให้คำตอบว่าเป็นเช่นนั้น หวังว่าสิ่งนี้จะช่วยชี้แจงคำถามเช่นนี้:
โมดูลัสกองโดยทั่วไป:
การหารโมดูลัสส่งคืนส่วนที่เหลือของการดำเนินการหารทางคณิตศาสตร์ มันเป็นดังนี้:
สมมติว่าเรามีเงินปันผล 5 และตัวหารของ 2 การดำเนินการหารต่อไปนี้จะ (เท่ากับ x):
dividend = 5
divisor = 2
x = 5/2
ขั้นตอนแรกในการคำนวณโมดูลัสคือการดำเนินการหารจำนวนเต็ม:
x_int = 5 // 2 (การหารจำนวนเต็มใน python ใช้ double slash)
x_int = 2
ถัดไปผลลัพธ์ของ x_int จะถูกคูณด้วยตัวหาร:
x_mult = x_int * ตัวหาร x_mult = 4
สุดท้ายเงินปันผลจะถูกลบออกจาก x_mult
เงินปันผล - x_mult = 1
ดังนั้นการดำเนินการโมดูลัสจึงส่งคืน 1:
5% 2 = 1
แอพลิเคชันเพื่อใช้โมดูลัสกับเศษส่วน
Example: 2 % 5
การคำนวณของโมดูลัสเมื่อนำไปใช้กับเศษส่วนเป็นเช่นเดียวกับข้างต้น; อย่างไรก็ตามมันเป็นสิ่งสำคัญที่จะต้องทราบว่าการหารจำนวนเต็มจะส่งผลให้มีค่าเป็นศูนย์เมื่อตัวหารมีขนาดใหญ่กว่าเงินปันผล:
dividend = 2
divisor = 5
การหารจำนวนเต็มให้ผลลัพธ์เป็น 0 โดยที่; ดังนั้นเมื่อดำเนินการตามขั้นตอนที่ 3 ข้างต้นแล้วมูลค่าของเงินปันผลจะถูกดำเนินการผ่าน (ลบออกจากศูนย์):
dividend - 0 = 2 —> 2 % 5 = 2
แอพลิเคชันเพื่อใช้โมดูลัสกับการลบ
การแบ่งชั้นเกิดขึ้นซึ่งค่าของการหารจำนวนเต็มถูกปัดเศษลงเป็นค่าจำนวนเต็มต่ำสุด:
import math
x = -1.1
math.floor(-1.1) = -2
y = 1.1
math.floor = 1
ดังนั้นเมื่อคุณทำการหารจำนวนเต็มคุณอาจได้ผลลัพธ์ที่แตกต่างจากที่คุณคาดไว้!
การนำขั้นตอนข้างต้นไปใช้กับเงินปันผลและตัวหารดังต่อไปนี้แสดงให้เห็นถึงแนวคิดของโมดูลัส:
dividend: -5
divisor: 2
ขั้นตอนที่ 1: ใช้การหารจำนวนเต็ม
x_int = -5 // 2 = -3
ขั้นตอนที่ 2: คูณผลลัพธ์ของการหารจำนวนเต็มด้วยตัวหาร
x_mult = x_int * 2 = -6
ขั้นตอนที่ 3: ลบเงินปันผลจากตัวแปรคูณสังเกตลบสองครั้ง
dividend - x_mult = -5 -(-6) = 1
ดังนั้น:
-5 % 2 = 1
โอเปอเรเตอร์% (modulo) ให้ผลที่เหลือจากการหารอาร์กิวเมนต์แรกด้วยวินาที อาร์กิวเมนต์ที่เป็นตัวเลขจะถูกแปลงเป็นประเภททั่วไปก่อน
3 + 2 + 1 - 5 + 4% 2 - 1/4 + 6 = 7
สิ่งนี้ขึ้นอยู่กับลำดับความสำคัญของโอเปอเรเตอร์
เป็นการดำเนินการแบบโมดูโล http://en.wikipedia.org/wiki/Modulo_operation
http://docs.python.org/reference/expressions.html
ดังนั้นด้วยคำสั่งของการดำเนินการที่ทำงานออกไป
(3 + 2 + 1-5) + (4% 2) - (1/4) + 6
(1) + (0) - (0) + 6
7
1/4 = 0 เพราะเราทำเลขจำนวนเต็มตรงนี้
มันเป็นเช่นเดียวกับในภาษา C หลายภาษาการดำเนินการที่เหลือหรือโมดูโล ดูเอกสารประเภทตัวเลข - int ลอยยาวซับซ้อน
โมดูลัส - แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวาและผลตอบแทนที่เหลือ
ถ้ามันช่วย:
1:0> 2%6
=> 2
2:0> 8%6
=> 2
3:0> 2%6 == 8%6
=> true
... และต่อไป
ฉันพบว่าวิธีที่ง่ายที่สุดในการเข้าใจตัวดำเนินการโมดูลัส (%) คือการแบ่งส่วนที่ยาว เป็นส่วนที่เหลือและสามารถเป็นประโยชน์ในการกำหนดจำนวนให้เป็นเลขคู่หรือคี่:
4%2 = 0
2
2|4
-4
0
11%3 = 2
3
3|11
-9
2