আশ্চর্যের বিষয়, অন্যদের মধ্যে এর একই রকমেরতা থাকলেও এই ফাংশনটি এখনও পোস্ট করা হয়নি। এটি ম্যাথ.াউন্ড () এর এমডিএন ওয়েব ডক্স থেকে। এটি সংক্ষিপ্ত এবং বিভিন্ন নির্ভুলতার জন্য অনুমতি দেয়।
function precisionRound(number, precision) {
var factor = Math.pow(10, precision);
return Math.round(number * factor) / factor;
}
কনসোল.লগ (নির্ভুলতা রাউন্ড (1234.5678, 1)); // প্রত্যাশিত আউটপুট: 1234.6
কনসোল.লগ (নির্ভুলতা রাউন্ড (1234.5678, -1)); // প্রত্যাশিত আউটপুট: 1230
var inp = document.querySelectorAll('input');
var btn = document.querySelector('button');
btn.onclick = function(){
inp[2].value = precisionRound( parseFloat(inp[0].value) * parseFloat(inp[1].value) , 5 );
};
//MDN function
function precisionRound(number, precision) {
var factor = Math.pow(10, precision);
return Math.round(number * factor) / factor;
}
button{
display: block;
}
<input type='text' value='0.1'>
<input type='text' value='0.2'>
<button>Get Product</button>
<input type='text'>
আপডেট: আগস্ট / 20/2019 সবেমাত্র এই ত্রুটিটি লক্ষ্য করেছেন। আমি বিশ্বাস করি এটি ম্যাথ.াউন্ড () এর সাথে একটি ভাসমান পয়েন্ট যথার্থ ত্রুটির কারণে।
precisionRound(1.005, 2) // produces 1, incorrect, should be 1.01
এই অবস্থাগুলি সঠিকভাবে কাজ করে:
precisionRound(0.005, 2) // produces 0.01
precisionRound(1.0005, 3) // produces 1.001
precisionRound(1234.5, 0) // produces 1235
precisionRound(1234.5, -1) // produces 1230
ফিক্স:
function precisionRoundMod(number, precision) {
var factor = Math.pow(10, precision);
var n = precision < 0 ? number : 0.01 / factor + number;
return Math.round( n * factor) / factor;
}
দশমিকের বৃত্তাকার সময় ডানদিকে এটি কেবল একটি অঙ্ক যোগ করে। এমডিএন ম্যাথ.উন্ড পৃষ্ঠাকে আপডেট করেছে যাতে সম্ভবত কেউ আরও ভাল সমাধান সরবরাহ করতে পারে।
0.1
একটি সীমাবদ্ধ বাইনারি ভাসমান পয়েন্ট সংখ্যাটিতে মানচিত্রের কোনও উপায় নেই ।