Memelihara Nisbah Apabila Menukar Julat Nombor
Dalam bidang manipulasi data, keperluan sering timbul untuk menukar nilai dari satu julat ke julat lain sementara mengekalkan nisbah relatif mereka. Ini amat berguna apabila memampatkan data atau memetakan nilai antara skala yang berbeza.
Mari kita pertimbangkan tugas untuk menukar julat nilai daripada -16000.00 hingga 16000.00 kepada julat integer 0-100 yang lebih terurus. Kami ingin memastikan bahawa penukaran mengekalkan nisbah antara nilai asal.
Kunci untuk mencapai pemeliharaan nisbah ini terletak pada formula berikut:
NewValue = (((OldValue - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) + NewMin
di mana:
Untuk memecahkannya dengan lebih lanjut:
Formula ini memastikan nisbah antara nilai dalam julat lama dikekalkan dalam julat baharu.
Sebagai contoh, jika OldValue ialah 8000.00, OldMin ialah -16000.00, OldMax ialah 16000.00, NewMax ialah 100 dan NewMin ialah 0 , NewValue akan dikira seperti berikut:
NewValue = (((8000.00 - (-16000.00)) * (100 - 0)) / (16000.00 - (-16000.00))) + 0 = (((24000.00) * (100)) / (32000.00)) + 0 = 75.00
Oleh itu, 8000.00 dalam julat lama sepadan dengan 75.00 dalam julat baharu, mengekalkan nisbah relatif antara nilai ini. Formula ini boleh disesuaikan lagi untuk mengendalikan kes di mana julat lama adalah sifar atau julat baharu yang diingini tidak bermula pada sifar.
Atas ialah kandungan terperinci Bagaimanakah cara saya mengekalkan nisbah antara nilai apabila menukar julat nombor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!