ในทางเทคนิคขึ้นอยู่กับภาษา แต่เกือบทุกภาษาจะปฏิบัติต่อเรื่องนี้เหมือนกัน เมื่อมีประเภทข้อมูลสองประเภทในนิพจน์ไม่ตรงกันภาษาส่วนใหญ่จะพยายามแคสต์ข้อมูลที่ด้านหนึ่งของข้อมูล=
เพื่อให้ตรงกับข้อมูลอีกด้านหนึ่งตามชุดของกฎที่กำหนดไว้ล่วงหน้า
เมื่อหารสองจำนวนประเภทเดียวกัน (จำนวนเต็มคู่ผสม ฯลฯ ) ผลลัพธ์จะเป็นประเภทเดียวกันเสมอ (ดังนั้น 'int / int' จะให้ผลลัพธ์เป็น int เสมอ)
ในกรณีนี้คุณจะ
double var = integer result
ร่ายผลลัพธ์จำนวนเต็มให้เป็นสองเท่าหลังจากการคำนวณซึ่งในกรณีนี้ข้อมูลเศษส่วนจะสูญหายไปแล้ว (ภาษาส่วนใหญ่จะทำการแคสต์นี้เพื่อป้องกันความไม่ถูกต้องของประเภทโดยไม่เพิ่มข้อยกเว้นหรือข้อผิดพลาด)
หากคุณต้องการให้ผลลัพธ์เป็นสองเท่าคุณจะต้องสร้างสถานการณ์ที่คุณมี
double var = double result
วิธีที่ง่ายที่สุดคือบังคับให้นิพจน์ทางด้านขวาของสมการร่ายเป็นสองเท่า:
c = a/(double)b
การหารระหว่างจำนวนเต็มและจำนวนเต็มจะส่งผลให้เกิดการแคสต์จำนวนเต็มเป็นคู่ (โปรดทราบว่าเมื่อทำการคำนวณคอมไพเลอร์มักจะ "อัปแคสต์" ไปยังประเภทข้อมูลที่เฉพาะเจาะจงที่สุดเพื่อป้องกันข้อมูลสูญหาย)
หลังจากการอัพแคสต์a
จะปิดเป็นสองเท่าและตอนนี้คุณมีการแบ่งระหว่างสองคู่ สิ่งนี้จะสร้างการแบ่งและการมอบหมายที่ต้องการ
อีกครั้งโปรดทราบว่านี่เป็นภาษาเฉพาะ (และอาจเป็นภาษาเฉพาะของคอมไพเลอร์ก็ได้) อย่างไรก็ตามเกือบทุกภาษา (แน่นอนว่าทุกภาษาที่ฉันคิดออกจากหัวของฉัน) ปฏิบัติต่อตัวอย่างนี้เหมือนกัน