জাভাস্ক্রিপ্ট: পরের একাধিক 5 পর্যন্ত বৃত্তাকার


113

আমার একটি ইউটিলিটি ফাংশন প্রয়োজন যা একটি পূর্ণসংখ্যার মান (দৈর্ঘ্যের 2 থেকে 5 অঙ্ক পর্যন্ত) গ্রহণ করে যা 5 এর নিকটতম একাধিকের পরিবর্তে পরবর্তী একাধিক 5 পর্যন্ত হয় Here এখানে আমি কী পেয়েছি:

function round5(x)
{
    return (x % 5) >= 2.5 ? parseInt(x / 5) * 5 + 5 : parseInt(x / 5) * 5;
}

আমি যখন চালানো round5(32), আমার দেয় 30, যেখানে আমি 35 চান
আমি যখন চালানো round5(37), আমার দেয় 35, যেখানে আমি 40 চাই।

আমি যখন চালানো round5(132), আমার দেয় 130, যেখানে আমি 135. চান
আমি যখন চালানো round5(137), আমার দেয় 135, যেখানে আমি 140 চান।

ইত্যাদি ...

আমি এটা কিভাবে করবো?


3
করা উচিত round5(5)5, বা 10 দেব?
ব্যবহারকারী 2357112

1
কীভাবে: এক্সকে 5 দ্বারা ভাগ করুন, নিকটতম পূর্ণসংখ্যার (ম্যাথ.সিল ফাংশনটি ব্যবহার করে) এবং তারপর 5 দিয়ে গুণাবেন?
মার্টিন উইলসন

2
রাউন্ড 5 (5) 5 দেওয়া উচিত
অমিত ইরানডোল

উত্তর:


270

এটি কাজটি করবে:

function round5(x)
{
    return Math.ceil(x/5)*5;
}

এটি ফাংশনের numberনিকটতম একাধিকের কাছে সাধারণ রাউন্ডিংয়ের কেবলমাত্র একটি প্রকরণ , তবে পরিবর্তে ব্যবহার করা গাণিতিক নিয়ম অনুসারে ডাউন / আপের পরিবর্তে সর্বদা গোল হয়ে যায়।xMath.round(number/x)*x.ceil.round


আপনি কীভাবে এত দ্রুত এই সমাধানে এসেছেন সে সম্পর্কে আপনি কিছুটা ব্যাখ্যা করতে পারেন? আমি ভেবেছিলাম ম্যাথ.সিল কেবলমাত্র পূর্ণসংখ্যার দশমিককে ঘিরে।
অমিত ইরানডোল

2
ঠিক আছে, এটি এখানে পুরো পূর্ণসংখ্যার সাথে মিলিত হয়, @ অ্যামিটইরেন্ডল;)
মাইকেল ক্রেলিন - হ্যাকার

1
কমপ্যাক্ট এবং দক্ষের জন্য +1 ... এবং এটি 10 ​​এর চেয়ে বড় হবে, তাই না? :)
zx81

আমি এই ফাংশনটিতে আরও একটি প্যারামিটার যুক্ত করব, "রাউন্ডার" নির্দেশ করে, যাতে ফাংশন কলটিতে আমরা যা সেট করি
সেটাকেই

3
আমি এই সমাধান ভালোবাসি! প্রয়োজন মতো একাধিক ইনলাইন সুবিধার্থে পরিবর্তনের জন্য এটি বন্ধ করে আমি এটি প্রয়োগ করেছি: const roundToNearestMultipleOf = m => n => Math.round(n/m)*mব্যবহার:roundToNearestMultipleOf(5)(32)
গফুল্লাম

12
const roundToNearest5 = x => Math.round(x/5)*5

এটি সংখ্যার নিকটতম 5 এ গোল করবে। সর্বদা নিকটতম 5 পর্যন্ত গোল করতে, ব্যবহার করুন Math.ceil। তেমনি, সর্বদা বৃত্তাকারে, Math.floorপরিবর্তে ব্যবহার করুন Math.round। তারপরে আপনি এই ফাংশনটিকে কল করতে পারেন যেমন আপনি অন্য কোনও ব্যক্তিকে করেন। উদাহরণ স্বরূপ,

roundToNearest5(21)

ফিরে আসবে:

20

গৃহীত উত্তর আসলে ভুল। এটি সঠিক উপায়। 2.5
অলিভার ডিক্সন


5

অনুরূপ কিছু সন্ধান করতে আমি এখানে পৌঁছেছি। আমার নম্বর যদি —0, —1, —2 হয় তবে এটি ফ্লোর হওয়া উচিত —0, এবং যদি এটি —3, —4, .5 হয় তবে এটি 500 ডলারে সিলিং করা উচিত।

আমি এই সমাধান নিয়ে এসেছি:

function round(x) { return x%5<3 ? (x%5===0 ? x : Math.floor(x/5)*5) : Math.ceil(x/5)*5 }

এবং পরীক্ষা:

for (var x=40; x<51; x++) {
  console.log(x+"=>", x%5<3 ? (x%5===0 ? x : Math.floor(x/5)*5) : Math.ceil(x/5)*5)
}
// 40 => 40
// 41 => 40
// 42 => 40
// 43 => 45
// 44 => 45
// 45 => 45
// 46 => 45
// 47 => 45
// 48 => 50
// 49 => 50
// 50 => 50

1
এটি আরও সহজেই ব্যবহার করে সম্পাদন করা যেতে পারেMath.round
স্পেন্সার স্টল্যাবলেবল

2
voici 2 solutions possibles :
y= (x % 10==0) ? x : x-x%5 +5; //......... 15 => 20 ; 37 => 40 ;  41 => 45 ; 20 => 20 ; 

z= (x % 5==0) ? x : x-x%5 +5;  //......... 15 => 15 ; 37 => 40 ;  41 => 45 ; 20 => 20 ;

শুভেচ্ছা পল


0

// নির্ভুলতা সহ বৃত্তাকার

var round = function (value, precision) {
    return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
};

নির্ভুলতা সহ // রাউন্ড 5

var round5 = (value, precision) => {
    return round(value * 2, precision) / 2;
}

0
const fn = _num =>{
    return Math.round(_num)+ (5 -(Math.round(_num)%5))
}

বৃত্তাকার ব্যবহারের কারণটি প্রত্যাশিত ইনপুটটি এলোমেলো সংখ্যা হতে পারে।

ধন্যবাদ !!!


-2
if( x % 5 == 0 ) {
    return int( Math.floor( x / 5 ) ) * 5;
} else {
    return ( int( Math.floor( x / 5 ) ) * 5 ) + 5;
}

হতে পারে?


রেফারেন্সএরর: intসংজ্ঞায়িত হয়নি। হতে পারে আপনি চেয়েছিলেন parseInt, তবে এটি কোনও দরকার নেই যেহেতু Math.floorএকটি নম্বর ফেরত দেয়।
পাওয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.