Bagaimanakah cara saya mengekalkan nisbah antara nilai apabila menukar julat nombor?

Linda Hamilton
Lepaskan: 2024-11-07 11:39:03
asal
377 orang telah melayarinya

How do I preserve the ratio between values when converting number ranges?

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
Salin selepas log masuk

di mana:

  • OldValue ialah nilai asal dalam julat lama
  • OldMin dan OldMax ialah nilai minimum dan maksimum julat lama
  • NewMax dan NewMin ialah nilai maksimum dan minimum bagi yang baharu julat

Untuk memecahkannya dengan lebih lanjut:

  • Kami mengira nisbah ternormal Nilai Lama dalam julat lama: (Nilai Lama - OldMin) / (OldMax - OldMin)
  • Kami mendarabkan nisbah ini dengan saiz julat baharu: (NewMax - NewMin)
  • Kami mengalihkan hasil ini dengan minimum julat baharu: NewMin

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan