alexa  Menu
Javascript ile yuvarlama hatası çözümü

Javascript ile yuvarlama hatası çözümü

  01.06.2018 ,   yorum yapılmadı ,   225 kez okundu.

Javascript web uygulamalarımızda çok kullandığımız bir dil. Kullanıcı tarafında dinamik işlemler yaparken çok kullanıyoruz. Siteye ayrı bir güzellik kullanışlılık katıor.

Benim anlatmak istediğim daha çok hesaplama işlemleri ile ilgili. Özellikle küsüratlı sayılarda basamak sayı belirlendiğinde yuvarlama işleminin doğru yapılmadığını görebilirsiniz.

Örnek olarak bazı yuvarlama işlemlerini paylaşıyorum:

console.log(Math.round(20.47)) // sonuç 20  - doğru
console.log(Math.round(20.59)) // sonuç 21 - doğru
console.log(Math.round(1.006*100)/100) //sonuç 1.01 - doğru

Şimdi biraz kodumuzu değiştirelim:

console.log(Math.round(1.005*100)/100); // sonuç 1 - yanlış
console.log(Number((1.005).toFixed(2))); // sonuç 1 - yanlış

Sonuç olarak çarpa, bölme işlemlerinden sonra virgülden sonraki basamaklarda yuvarlama işleminde sorun oluyor. Normalde 5 ve üzeri ise kendinden önceki sayıyı bir üst sayıya yuvarlaması gerekirken, yukarıda paylaştığım kod parçacığında da gördüğünüz gibi yanlış yuvarlıyor. Mesela, 1.05 ise 1.1, 1.03 ise 1.0 gibi yuvarlaması gerekiyor.

Bu sorunu çözebilmek için aşağıdaki gibi bir fonksiyon oluşturabiliriz:

function yuvarla(sonuc, basamak) {
    return Number(Math.round(sonuc+'e'+basamak)+'e-'+basamak);
}

yuvarla((1.005*100)/100,2); //sonuç - 1.01

yuvarla((1.0457*100)/100*2,3) //sonuç - 2.091

yuvarla((1.0457*100)/100*2,1) //sonuç - 2.1

Umarım işinize yaramıştır. İyi çalışmalar dilerim.

Bir Cevap Yazın


%d blogcu bunu beğendi: