นี่คือวิธีที่ฉันเข้าใจ:
เปอร์เซ็นต์x
อยู่ในช่วงใด
สมมติว่าคุณมีช่วงจากไป0
100
ด้วยจำนวนที่กำหนดเองจากช่วงนั้น "เปอร์เซ็นต์" จากช่วงนั้นคืออะไร นี้ควรจะสวยเรียบง่าย, 0
จะ0%
, 50
จะเป็น50%
และจะเป็น100
100%
ตอนนี้สิ่งที่ถ้าช่วงของคุณเป็น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