นี่คือวิธีที่ฉันเข้าใจ:
เปอร์เซ็นต์xอยู่ในช่วงใด
สมมติว่าคุณมีช่วงจากไป0 100ด้วยจำนวนที่กำหนดเองจากช่วงนั้น "เปอร์เซ็นต์" จากช่วงนั้นคืออะไร นี้ควรจะสวยเรียบง่าย, 0จะ0%, 50จะเป็น50%และจะเป็น100100%
ตอนนี้สิ่งที่ถ้าช่วงของคุณเป็น20ไป100? เราไม่สามารถใช้ตรรกะเดียวกันกับด้านบน (หารด้วย 100) เพราะ:
20 / 100
ไม่ให้เรา0( 20ควรเป็น0%ตอนนี้) นี้ควรจะเป็นเรื่องง่ายที่จะแก้ไขปัญหาเราก็ต้องทำให้เศษสำหรับกรณีของ0 20เราสามารถทำได้โดยการลบ:
(20 - 20) / 100
อย่างไรก็ตามวิธีนี้ใช้ไม่ได้100อีกต่อไปเพราะ:
(100 - 20) / 100
100%ไม่ให้เรา อีกครั้งเราสามารถแก้ไขได้โดยการลบจากตัวส่วนด้วย:
(100 - 20) / (100 - 20)
สมการที่ทำให้เป็นทั่วไปมากขึ้นสำหรับการค้นหาว่า% xอยู่ในช่วงใด:
(x - MIN) / (MAX - MIN)
ช่วงสเกลเป็นช่วงอื่น
ตอนนี้เราทราบแล้วว่าเปอร์เซ็นต์อยู่ในช่วงใดเราสามารถนำไปใช้เพื่อจับคู่กับช่วงอื่น ลองดูตัวอย่าง
old range = [200, 1000]
new range = [10, 20]
ถ้าเรามีตัวเลขในช่วงเก่าจำนวนนั้นจะเป็นเท่าใดในช่วงใหม่ 400สมมติว่าตัวเลขคือ ก่อนอื่นให้หาเปอร์เซ็นต์ที่400อยู่ในช่วงเก่า เราสามารถใช้สมการข้างต้น
(400 - 200) / (1000 - 200) = 0.25
ดังนั้น400อยู่ใน25%ช่วงเก่า เราแค่ต้องหาว่าจำนวนใดที่อยู่25%ในช่วงใหม่ คิดเกี่ยวกับสิ่ง50%ของ[0, 20]มี มันจะ10ใช่มั้ย คุณมาถึงคำตอบนั้นได้อย่างไร เราทำได้แค่:
20 * 0.5 = 10
แต่แล้วมาจาก[10, 20]ไหน? เราต้องเปลี่ยนทุกอย่างใน10ตอนนี้ เช่น:
((20 - 10) * 0.5) + 10
สูตรทั่วไปมากขึ้นจะเป็น:
((MAX - MIN) * PERCENT) + MIN
กับตัวอย่างเดิมของสิ่งที่25%ของ[10, 20]คือ:
((20 - 10) * 0.25) + 10 = 12.5
ดังนั้น400ในช่วง[200, 1000]จะแมปไป12.5ในช่วง[10, 20]
TLDR
เพื่อทำแผนที่xจากช่วงเก่าไปยังช่วงใหม่:
OLD PERCENT = (x - OLD MIN) / (OLD MAX - OLD MIN)
NEW X = ((NEW MAX - NEW MIN) * OLD PERCENT) + NEW MIN