ডগবার্টের উত্তরটি ভাল, তবে যদি আপনার কোডটি নেতিবাচক সংখ্যার সাথে ডিল 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
হয় তবে প্রথম লাইনে একটি কল sert োকান:
var multiplier = Math.pow(10, Math.abs(digits)),
সম্পাদনা: শেন্ডজ সঠিকভাবে উল্লেখ করে যে এই সমাধানটি ব্যবহার করে 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);
}
যাদের গতি প্রয়োজন তবে ভাসমান-পয়েন্ট ত্রুটিগুলি এড়াতে চান তাদের জন্য, বিগডেসিমাল.জেসের মতো কিছু চেষ্টা করুন । আপনি এই অন্যান্য প্রশ্নে অন্যান্য জাভাস্ক্রিপ্ট বিগডিসিমাল লাইব্রেরিগুলি খুঁজে পেতে পারেন: "একটি ভাল জাভাস্ক্রিপ্ট বিগডিসিমাল লাইব্রেরি আছে কি?" এবং জাভাস্ক্রিপ্টের জন্য গণিত লাইব্রেরি সম্পর্কে একটি ভাল ব্লগ পোস্ট এখানে