কোনও মডুলাস হ্রাস করার স্ট্যান্ডার্ড উপায় হ'ল সংক্রমণের পরে ঘাটতি যুক্ত করা যদি কোনও অতিরিক্ত প্রবাহ ঘটে থাকে। উদাহরণস্বরূপ আপনি বাইনারি হার্ডওয়্যার ব্যবহার করে এভাবে বিসিডি সংযোজন করবেন।
যদিও আপনি এভাবে ভাসমানগুলি ব্যবহার করে যোগ করতে পারেন , আপনার উচিত কিনা তা নিয়ে একটি প্রশ্ন রয়েছে । মূলত পূর্ণসংখ্যার পরিমাণগুলি কী তা পরিচালনা করতে ভাসা সংখ্যা ব্যবহারে সমস্যাগুলি সুপরিচিত এবং আমি তাদের এখানে পুনরায় মহড়া দিতে যাচ্ছি না।
সাধারণত, ভাসা ভগ্নাংশের সংযোজন 1.0 এর একটি মডুলাসের সাথে স্পষ্টভাবে কাজ করে, ভগ্নাংশের বাইরে একটি ওভারফ্লোটি পূর্ণসংখ্যার অংশকে বাড়িয়ে তোলে। যদি আমরা বিন্দুটিকে ঘন্টা হিসাবে ব্যাখ্যা করি। উপযুক্ত সময়ে যোগ করার জন্য এটি 0.4 এর ঘাটতি দরকার।
function add_float_hours_minutes(a, b)
{
var trial_sum = a+b;
// did an actual overflow occur, has the integer part incremented?
if ( Math.floor(trial_sum) > Math.floor(a)+Math.floor(b) ) {
trial_sum += 0.4;
}
// has the fractional part exceeded its allotted 60 minutes?
if ( trial_sum-Math.floor(trial_sum) >= 0.6) {
trial_sum += 0.4;
}
return trial_sum;
}
var arr = [0.15, 0.2, 3.45, 0.4, 2, 0.3, 5.2, 1, 1.4, 1.1, 2.4, 1, 3.4]
var sum = 0.0;
arr.forEach(function(item) {
console.log(sum);
// sum += parseFloat(item);
sum = add_float_hours_minutes(sum, parseFloat(item));
});
যা নীচের আউটপুট উত্পাদন করে, ওপি যা চেয়েছিল তা চক্রের মধ্যেই সঠিক
0
0.15
0.35
4.2
5.000000000000001
7.000000000000001
7.300000000000001
12.5
13.5
15.3
16.400000000000002
19.2
20.2
আমি চূড়ান্ত বিন্যাস পাঠকের জন্য অনুশীলন হিসাবে দুটি দশমিক স্থানে রেখেছি। তাদের সমস্ত গৌরবটিতে ১৫ টি পিছনের অঙ্কগুলি কেন ভাসা ব্যবহার করা সবচেয়ে ভাল উপায় নয় তার একটি অংশ চিত্রিত করে।
এছাড়াও, আপনি যখন সেকেন্ড বা দিন অন্তর্ভুক্ত করতে চান তখন কী ঘটে তা বিবেচনা করুন। দুটি ভাসমান সেকেন্ডের আরও দুটি স্ট্যান্ডার্ড উপায়, বা একটি পূর্ণসংখ্যার পূর্ণসংখ্যা হঠাৎ করে অনেক বেশি বুদ্ধিমান দেখায়।