একটি সংখ্যায় দশমিক বিন্দুর পর কতগুলো অঙ্ক আছে সেটি গণনা করা।
উদাহরণ
1.123456789 → ৯টি অঙ্ক 123456789 → ০টি (ইন্টিজার)
সমাধান
const decimalCount = (num) => {
const str = String(num);
if (!str.includes('.')) return 0;
// scientific notation হ্যান্ডল (1e-5 → "0.00001")
if (str.includes('e') || str.includes('E')) {
return Math.max(0, -Number(str.split('e')[1]) ||
-Number(str.split('E')[1]));
}
return str.split('.')[1].length;
};
// আরও রোবাস্ট
const decimalCountRobust = (num) => {
if (!Number.isFinite(num)) return 0;
const str = num.toString();
const decimalIndex = str.indexOf('.');
if (decimalIndex === -1) return 0;
// Scientific notation চেক
const expIndex = str.indexOf('e');
if (expIndex !== -1) {
const exp = parseInt(str.slice(expIndex + 1));
return Math.max(0, str.length - decimalIndex - 1 - exp);
}
return str.length - decimalIndex - 1;
};
// টেস্ট
console.log(decimalCount(1.123456789)); // 9
console.log(decimalCount(123456789)); // 0
console.log(decimalCount(1.5)); // 1
console.log(decimalCount(1.0)); // 1 ("1.0")
console.log(decimalCount(1e-5)); // 5 (0.00001)
ফ্লোটিং পয়েন্ট প্রিসিশন সতর্কতা
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(decimalCount(0.1 + 0.2)); // 17 (অপ্রত্যাশিত!)
// সমাধান: নির্দিষ্ট প্রিসিশনে রাউন্ড করুন
const decimalCountSafe = (num, precision = 15) => {
return decimalCount(Number(num.toPrecision(precision)));
};
উৎপাদন
9 0