คำตอบของ animal_magic นั้นถูกต้องที่คุณควรเพิ่มตัวเลขจากน้อยที่สุดไปหามากที่สุด แต่ฉันต้องการยกตัวอย่างเพื่อแสดงว่าทำไม
สมมติว่าเรากำลังทำงานในรูปแบบจุดลอยที่ให้ความแม่นยำ 3 หลัก ตอนนี้เราต้องการเพิ่มหมายเลขสิบ:
[1000, 1, 1, 1, 1, 1, 1, 1, 1, 1]
แน่นอนคำตอบที่แน่นอนคือ 1,059 แต่เราไม่สามารถรับได้ในรูปแบบ 3 หลักของเรา การปัดเศษเป็นตัวเลข 3 หลักคำตอบที่แม่นยำที่สุดที่เราได้รับคือ 1,010 ถ้าเราเพิ่มเล็กที่สุดไปหามากที่สุดในแต่ละวงเราจะได้รับ:
Loop Index s
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 1009 -> 1010
ดังนั้นเราจึงได้คำตอบที่แม่นยำที่สุดสำหรับรูปแบบของเรา ทีนี้สมมติว่าเราเพิ่มจากมากไปหาน้อย
Loop Index s
1 1000
2 1001 -> 1000
3 1001 -> 1000
4 1001 -> 1000
5 1001 -> 1000
6 1001 -> 1000
7 1001 -> 1000
8 1001 -> 1000
9 1001 -> 1000
10 1001 -> 1000
เนื่องจากจำนวนจุดลอยตัวจะถูกปัดเศษหลังจากการดำเนินการแต่ละครั้งส่วนที่เหลือทั้งหมดจะถูกปัดเศษทำให้ข้อผิดพลาดของเราเพิ่มขึ้นจาก 1 เป็น 9 จากที่แน่นอน ทีนี้ลองคิดดูว่าชุดตัวเลขที่คุณต้องการเพิ่มมี 1,000 จากนั้นเป็นร้อย 1 หรือล้าน โปรดทราบว่าเพื่อให้มีความถูกต้องอย่างแท้จริงคุณจะต้องรวมตัวเลขสองตัวที่เล็กที่สุดแล้วนำผลลัพธ์มารวมกันเป็นชุดตัวเลข