डॉगबर्ट का जवाब अच्छा है, लेकिन अगर आपके कोड को नकारात्मक संख्या से निपटना पड़ सकता है, तो Math.floor
स्वयं अप्रत्याशित परिणाम दे सकता है।
जैसे Math.floor(4.3) = 4
, लेकिनMath.floor(-4.3) = -5
सुसंगत परिणाम प्राप्त करने के लिए इस तरह एक सहायक फ़ंक्शन का उपयोग करें:
truncateDecimals = function (number) {
return Math[number < 0 ? 'ceil' : 'floor'](number);
};
var a = 5.467;
var truncated = truncateDecimals(a * 100) / 100;
यहाँ इस समारोह का एक और अधिक सुविधाजनक संस्करण है:
truncateDecimals = function (number, digits) {
var multiplier = Math.pow(10, digits),
adjustedNum = number * multiplier,
truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum);
return truncatedNum / multiplier;
};
var a = 5.467;
var truncated = truncateDecimals(a, 2);
var b = 4235.24;
var truncated = truncateDecimals(b, -2);
यदि वह वांछित व्यवहार नहीं है, Math.abs
तो पहली पंक्ति में कॉल डालें :
var multiplier = Math.pow(10, Math.abs(digits)),
संपादित करें: shendz सही ढंग से बताता है कि इस समाधान का उपयोग a = 17.56
गलत तरीके से होगा 17.55
। ऐसा क्यों होता है, इसके बारे में अधिक जानने के लिए, फ्लोटिंग-पॉइंट अंकगणित के बारे में हर कंप्यूटर वैज्ञानिक को क्या जानना चाहिए । दुर्भाग्य से, एक समाधान लिखना जो फ्लोटिंग-पॉइंट त्रुटि के सभी स्रोतों को समाप्त करता है, जावास्क्रिप्ट के साथ बहुत मुश्किल है। किसी अन्य भाषा में आप पूर्णांक या शायद दशमलव प्रकार का उपयोग करेंगे, लेकिन जावास्क्रिप्ट के साथ ...
यह समाधान 100% सटीक होना चाहिए , लेकिन यह भी धीमा होगा:
function truncateDecimals (num, digits) {
var numS = num.toString(),
decPos = numS.indexOf('.'),
substrLength = decPos == -1 ? numS.length : 1 + decPos + digits,
trimmedResult = numS.substr(0, substrLength),
finalResult = isNaN(trimmedResult) ? 0 : trimmedResult;
return parseFloat(finalResult);
}
उन लोगों के लिए जिन्हें गति की आवश्यकता है, लेकिन फ़्लोटिंग-पॉइंट त्रुटियों से भी बचना चाहते हैं, BigDecimal.js की तरह कुछ आज़माएं । आप इस SO प्रश्न में अन्य जावास्क्रिप्ट BigDecimal पुस्तकालयों को पा सकते हैं: "क्या एक अच्छी जावास्क्रिप्ट Bigececimal पुस्तकालय है?" और यहाँ जावास्क्रिप्ट के लिए गणित पुस्तकालयों के बारे में एक अच्छा ब्लॉग पोस्ट है