Wednesday, September 26, 2007

0.0035x100 tidak sama dengan 0.35

Baru-baru ini saya membuat aplikasi perhitungan menggunakan javascript. Aplikasinya cukup sederhana, tapi ada suatu hal yang membuat saya binun sampe 7 keliling,
yaitu saat saya ingin mengalikan suatu variabel dengan 100, maksudnya agar saya mendapat nilai persen dari variabel itu,
tapi... saat variabel itu bernilai 0.0035, hasil yang didapat ternyata tidak seperti yang diharapkan.
Menurut perhitungan manual(dengan menggeser koma kekanan sebanyak 2 kali) 0.0035 x 100 = 0.35, tapi javascript menghasilkan nilai 0.35000000000000003, walahhhh aneh bukan...
sample code
<script>
x=0.0035
y=x*100
alert(y)
</script>

2 comments:

Unknown said...

Ini karena masalah presisi floatin point di Javascript saja. Kamu bisa gunakan built-in function toFixed atau toPrecision:

x= 0.0035
y = x * 100
alert(y.toFixed(2))
alert(y.toPrecision(2))

(Hasil: y = 0.35)

Perbedaannya terletak pada jumlah digit keseluruhan dan digit di belakang koma desimal.

Anonymous said...

Iya ya, lucu... Betul sih dengan pembulatan atau pemotongan tentunya bisa diperoleh angka yang diinginkan, tapi yang jadi permasalahan adalah darimana datangnya 0.35000000000000003 itu?