Bu, N basamağa yuvarlamak için çalışır (yalnızca N basamağa kesmek istiyorsanız Math.round çağrısını kaldırın ve Math.trunc birini kullanın):
function roundN(value, digits) {
var tenToN = 10 ** digits;
return /*Math.trunc*/(Math.round(value * tenToN)) / tenToN;
}
Geçmişte veri işleme E-Slate bileşenlerini yazarken Java'da böyle bir mantığa başvurmak zorunda kaldım . Bu, 0'a defalarca 0.1 eklemenin beklenmedik bir şekilde uzun bir ondalık kısımla sonuçlanacağını öğrendiğimden beri (bu, kayan nokta aritmetiklerinden kaynaklanmaktadır).
Her zaman 2 ondalık basamağı gösteren Biçim numarası'ndaki bir kullanıcı yorumu bu tekniği ölçeklendirmeyi çağırır.
Bazıları beklendiği gibi yuvarlanmayan durumlar olduğunu ve bunun yerine http://www.jacklmoore.com/notes/rounding-in-javascript/ adresinde bunun önerildiğinden bahsediyor :
function round(value, decimals) {
return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
}
toFixed()
( developer.mozilla.org/En/Core_JavaScript_1.5_Reference/… ) kullanabilirsiniz , ancak IE'de hatalı: stackoverflow.com/questions/661562/… ; kendi versiyonunuzu yazmanız gerekecek ...