คำถามติดแท็ก integer-division


7
ทำไมการหารใน Ruby ถึงส่งคืนจำนวนเต็มแทนค่าทศนิยม
ตัวอย่างเช่น: 9 / 5 #=> 1 1.8แต่ผมคาดว่า ฉันจะรับผลลัพธ์ทศนิยม (ไม่ใช่จำนวนเต็ม) ที่ถูกต้องได้อย่างไร ทำไมมันกลับมา1เลย?

10
การแบ่งจำนวนเต็ม: คุณสร้างจำนวนอย่างไร
สำหรับบล็อกรหัสนี้: int num = 5; int denom = 7; double d = num / denom; ค่าของการมีd 0.0สามารถบังคับให้ทำงานโดยการคัดเลือกนักแสดง: double d = ((double) num) / denom; แต่มีวิธีอื่นในการรับdoubleผลลัพธ์ที่ถูกต้องหรือไม่ ฉันไม่ชอบการคัดเลือกแบบดั้งเดิมผู้รู้ว่าจะเกิดอะไรขึ้น

5
เหตุใด GCC จึงใช้การคูณด้วยจำนวนแปลก ๆ ในการใช้การหารจำนวนเต็ม
ฉันได้อ่านเกี่ยวกับการประกอบdivและการmulประกอบและฉันตัดสินใจที่จะเห็นพวกเขาในการดำเนินการโดยการเขียนโปรแกรมง่าย ๆ ใน C: ไฟล์ Division.c #include <stdlib.h> #include <stdio.h> int main() { size_t i = 9; size_t j = i / 5; printf("%zu\n",j); return 0; } จากนั้นสร้างรหัสภาษาแอสเซมบลีด้วย: gcc -S division.c -O0 -masm=intel แต่การดูdivision.sไฟล์ที่สร้างขึ้นมันไม่มีการดำเนินการใด ๆ ของ div! แต่กลับกลายเป็นเวทมนตร์ดำบางชนิดที่มีการเปลี่ยนบิตและตัวเลขเวทย์มนตร์ นี่คือข้อมูลโค้ดที่คำนวณi/5: mov rax, QWORD PTR [rbp-16] ; Move i (=9) to RAX …



10
เหตุใดการหารสอง int จึงไม่ให้ค่าที่เหมาะสมเมื่อกำหนดให้เป็นสองเท่า
เป็นอย่างไรบ้างในตัวอย่างต่อไปนี้ int a = 7; int b = 3; double c = 0; c = a / b; cลงเอยด้วยค่า 2 แทนที่จะเป็น 2.3333 อย่างที่คาดหวัง ถ้าaและbเป็นสองเท่าคำตอบจะเปลี่ยนเป็น 2.333 แต่แน่นอนเพราะc มันเป็นสองเท่ามันควรจะทำงานร่วมกับจำนวนเต็ม? แล้วทำไมถึงint/int=doubleไม่ได้ผล?


2
วิธีการแบ่งส่วนใน Go
ฉันกำลังพยายามแบ่งส่วนง่ายๆใน Go fmt.Println(3/10) สิ่งนี้จะพิมพ์ 0 แทนที่จะเป็น 0.3 นี่เป็นเรื่องแปลก ใครช่วยบอกเหตุผลที่อยู่เบื้องหลังเรื่องนี้ได้ไหม ฉันต้องการดำเนินการทางคณิตศาสตร์ที่แตกต่างกันใน Go ขอบคุณ

2
อะไรคือสาเหตุของความแตกต่างระหว่างการหารจำนวนเต็มและการแปลงทศนิยมเป็นการแปลง int ในไพ ธ อน?
ฉันเพิ่งสังเกตเห็นว่าการint()ปัดเศษเป็นทศนิยมให้เป็น 0 ในขณะที่การแบ่งจำนวนเต็มปัดลอยไปทางพื้น เช่น: -7 // 2 = -4 int(-7/2) = -3 ฉันได้อ่านเอกสารที่ระบุว่า: คลาส int (x, ฐาน = 10) ส่งคืนวัตถุจำนวนเต็มที่สร้างจากตัวเลขหรือสตริง x หรือส่งคืน 0 หากไม่มีการระบุอาร์กิวเมนต์ ถ้า x เป็นตัวเลขให้ส่งคืน x int () สำหรับจำนวนจุดลอยตัวสิ่งนี้จะตัดให้เหลือศูนย์ และ: การแบ่งชั้น ส่วนคณิตศาสตร์ที่ปัดเศษลงเป็นจำนวนเต็มที่ใกล้เคียงที่สุด ตัวดำเนินการหารพื้นคือ // ตัวอย่างเช่นนิพจน์ 11 // 4 ประเมินเป็น 2 ตรงกันข้ามกับ 2.75 ที่ส่งกลับโดยการหารทรูที่แท้จริง โปรดทราบว่า (-11) // 4 คือ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.