ฉันเพิ่งพบปัญหาเล็ก ๆ ใน iOS Swift เมื่อแปลง Double เป็น Int
var myDoubleValue: Double = 10.2
var newInt = Int(myDoubleValue * 100) //1019
ที่นั่นฉันกำลังคูณ 10.2 ด้วย 100 และไม่ได้รับค่าที่คาดหวัง (1,020) และแทนที่จะเป็น 1,019...
แต่ใช้งานได้ถูกต้องในกรณีส่วนใหญ่ดังนี้
var myDoubleValue: Double = 10.3
var newInt = Int(myDoubleValue * 100) //1030
ฉันยังทดสอบเพิ่มเติมด้วย Java และปัญหาเดียวกันที่นั่นเช่นกัน ..
double myDoubleValue = 10.2;
int myIntValue1 = (int)(myDoubleValue * 100); //1019
ฉันสามารถแก้ไขปัญหาได้โดยดำเนินการ 'ปัดเศษ' ก่อนแปลงเป็น Int ดังนี้...
var myDoubleValue: Double = 10.2
var newInt = Int(round(myDoubleValue * 100)) //1020
แต่นี่เข้าเรื่องที่ผมไม่อยากได้ถ้าค่ามีทศนิยม 3 ตำแหน่งดังนี้ เพราะ ณ เวลานั้นปัดเศษ (10.206 ---> 1021)