ম্যাথ.ফ্লুর () এবং ম্যাথ। ট্রান্সকেট () এর মধ্যে পার্থক্য


422

নেট মধ্যে Math.Floor()এবং পার্থক্য কি Math.Truncate()?


8
যেমন Math.Floor (5,4) = 5 Math.Truncate (5.4) = 5
subramani

3
10 বছরের অদ্ভুততার পরে আপনার সত্যিই এটি দরকার? lol
এল_চর্চ

1
কেন 10 বছর পরে একটি অনুগ্রহ আছে? ইতিমধ্যে অনেক উত্তর আছে। এখানে কি কিছু মিস করছি?
পুডল

3
এই লোকটি কেবল 1 টি প্রশ্ন জিজ্ঞাসা করেছিল এবং সেই থেকে সাইটটি ছেড়ে যায়। আমার ধারণা, তিনি সবসময়ই এটি জানতে চেয়েছিলেন ..: ডি
নিকস

উত্তর:


484

Math.Floorরাউন্ড ডাউন, Math.Ceilingরাউন্ড আপ এবং Math.Truncateশূন্যের দিকে রাউন্ডগুলি। সুতরাং, Math.Truncateভালো হয় Math.Floorইতিবাচক সংখ্যার জন্য এবং অন্য কোনো Math.Ceilingঋণাত্মক সংখ্যা জন্য। রেফারেন্স এখানে ।

সম্পূর্ণতার Math.Roundজন্য, নিকটতম পূর্ণসংখ্যার বৃত্তাকার। সংখ্যাটি যদি দুটি পূর্ণসংখ্যার মাঝামাঝি মাঝখানে হয় তবে এটি একটির সমান দিকে ঘুরবে। রেফারেন্স।

আরও দেখুন: প্যাক্স ডায়াবলোর উত্তর । অত্যন্ত বাঞ্ছনীয়!


31
@ ক্রিস, আমি আপনাকে রাউন্ডের বর্ণনাটি ঠিক করার পরামর্শ দিচ্ছি, রাউন্ড করার দুটি উপায় আছে (অ্যাওফ্রোমজিরো এবং টোভেন) এবং এটি নিকটতম পূর্ণসংখ্যার সাথে গোল হয় না কারণ এটি ভগ্নাংশগুলিও করতে পারে do
প্যাক্সিডিয়াবলো

1
সুতরাং আসল প্রশ্নের সাথে একটি সংক্ষিপ্ত যোগ করুন - ম্যাথ.ট্রান্সকেট এবং কেবলমাত্র একটি দশমিক বা ডাবল টু ইন্টাস্টের মধ্যে পার্থক্য কী? এটিও কি শূন্যের দিকে গোল হবে না?
নোম গাল

8
কখন (int)myDoubleথেকে আলাদা হয় (int)Math.Truncate(myDouble)?
এমপেন

2
ম্যাথ ক্লাসে (ইনট) সমান কী ?
লেই ইয়াং

386

এমএসডিএন বর্ণনার জন্য এই লিঙ্কগুলি অনুসরণ করুন:

  • Math.Floor, যা নেতিবাচক অনন্তের দিকে গোল করে।
  • Math.Ceiling, যা ইতিবাচক অনন্তের দিকে ঘুরছে।
  • Math.Truncate, যা গোল অথবা উপরে শূন্যের দিকে।
  • Math.Round, যেটি নিকটতম পূর্ণসংখ্যা বা দশমিক জায়গাগুলির নির্দিষ্ট সংখ্যায় গোল হয়। আপনি যদি আচরণটি নির্দিষ্ট করে দিতে পারেন তবে এটি দুটি সম্ভাবনার মধ্যে একেবারে সামঞ্জস্যপূর্ণ, যেমন রাউন্ডিং যাতে চূড়ান্ত অঙ্কটি সমান হয় (" Round(2.5,MidpointRounding.ToEven)" 2 হয়) বা যাতে এটি শূন্য থেকে দূরে (" Round(2.5,MidpointRounding.AwayFromZero)" হয়ে 3) হয়।

নিম্নলিখিত চিত্র এবং সারণি সাহায্য করতে পারে:

-3        -2        -1         0         1         2         3
 +--|------+---------+----|----+--|------+----|----+-------|-+
    a                     b       c           d            e

                       a=-2.7  b=-0.5  c=0.3  d=1.5  e=2.8
                       ======  ======  =====  =====  =====
Floor                    -3      -1      0      1      2
Ceiling                  -2       0      1      2      3
Truncate                 -2       0      0      1      2
Round (ToEven)           -3       0      0      2      3
Round (AwayFromZero)     -3      -1      0      2      3

দ্রষ্টব্য যে Roundএটি মনে হয় তার থেকে অনেক বেশি শক্তিশালী, কেবলমাত্র এটি নির্দিষ্ট দশমিক জায়গার সাথে গোল করতে পারে। অন্য সবসময় সর্বদা শূন্য দশমিক to উদাহরণ স্বরূপ:

n = 3.145;
a = System.Math.Round (n, 2, MidpointRounding.ToEven);       // 3.14
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15

অন্যান্য ক্রিয়াকলাপগুলির সাথে, আপনাকে একই প্রভাব অর্জন করতে গুণ / বিভাজন কৌশল ব্যবহার করতে হবে:

c = System.Math.Truncate (n * 100) / 100;                    // 3.14
d = System.Math.Ceiling (n * 100) / 100;                     // 3.15

7
প্যাকস, আমি মনে করি আপনার সাথে ভুল হয়েছে: রাউন্ড (অ্যাওফ্রোমজিরো) -3 -2 1 2 3 ম্যাথ.রউন্ড (-1.2, মিডপয়েন্টরোউন্ডিং.আওএফ্রোমজিরো) == -1 ম্যাথ.আরউন্ড (0.3 0.0 ইত্যাদি ..
dtroy

1
ধন্যবাদ, @ ডিট্রয়, আমার কখনই সেই মোডটি ব্যবহার করার প্রয়োজন ছিল না এবং আমি যখন এটি সঠিকভাবে নথিভুক্ত করেছি তবে যদি পাঠ্যটি আমি পুরোপুরি উদাহরণগুলি ভুল করে ফেলেছি। আশা করি এখনই তা ঠিক হয়ে গেছে।
প্যাক্সিডিয়ালো

এইরকম একটি পুরানো প্রশ্নে মন্তব্য করার জন্য দুঃখিত তবে আমাকে জিজ্ঞাসা করতে হবে: আপনি "টোভেন" দুটি দশমিক জায়গায় কীভাবে গোল করতে পারেন? অবশ্যই বিজোড় এবং এমনকি শুধুমাত্র পূর্ণসংখ্যার ক্ষেত্রেও প্রয়োগ হয়?
রিচিবান

4
@ রিচিবান, বৃত্তাকার সংখ্যায় evenচূড়ান্ত অঙ্কের সম্পত্তি হিসাবে ভাবেন, অর্থ হিসাবে পুরো সংখ্যাটি অবশ্যই দুটি এর একাধিক হতে হবে না। যাইহোক, দুঃখিত আপনার কাছে ফিরে আসতে এত দিন লেগেছে, আশা করি আপনি আমার প্রতিক্রিয়ার জন্য অপেক্ষা করতে বসেছেন না :-)
প্যাক্সিডিয়াবল

62

Math.Floor() নেতিবাচক অসীমের দিকে বৃত্তাকার

Math.Truncate গোল বা উপরে শূন্য দিকে।

উদাহরণ স্বরূপ:

Math.Floor(-3.4)     = -4
Math.Truncate(-3.4)  = -3

যখন

Math.Floor(3.4)     = 3
Math.Truncate(3.4)  = 3

2
একটি সংক্ষিপ্ত উদাহরণ সহ দুর্দান্ত এবং সাধারণ ব্যাখ্যা, এটি এই প্রশ্নের উত্তর হিসাবে চিহ্নিত করা উচিত।
nivs1978

44

কিছু উদাহরণ:

Round(1.5) = 2
Round(2.5) = 2
Round(1.5, MidpointRounding.AwayFromZero) = 2
Round(2.5, MidpointRounding.AwayFromZero) = 3
Round(1.55, 1) = 1.6
Round(1.65, 1) = 1.6
Round(1.55, 1, MidpointRounding.AwayFromZero) = 1.6
Round(1.65, 1, MidpointRounding.AwayFromZero) = 1.7

Truncate(2.10) = 2
Truncate(2.00) = 2
Truncate(1.90) = 1
Truncate(1.80) = 1

29

Math.floorবাম দিকে
Math.ceilস্লাইইয়াইড ...
Math.truncateডানদিকে স্লাইইয়াইড ... ক্রিমিয়াস ক্রুওস (মেঝে / সিলটি সর্বদা 0 এর দিকে থাকে)
Math.roundচা চা, রিয়েল স্মুথ ... (নিকটতম দিকে যান)

চল কাজে যাই! (⌐ □: _ □)

বাম দিকে ... Math.floor
এখনই আবার নিয়ে যাও ... সব এবার ... --
দুটি হপ ...-=2

সবাই হাততালি দেয় ✋✋

আপনি কিভাবে কম যেতে পারেন? আপনি কি নিচে যেতে পারেন? সব পথে floor?

if (this == "wrong")
    return "i don't wanna be right";

Math.truncate(x)হিসাবে একই int(x)
ইতিবাচক বা নেতিবাচক ভগ্নাংশটি সরিয়ে আপনি সর্বদা 0 এর দিকে যাচ্ছেন।


হাহাহাহা সুন্দর রিমিক্স।
ড্যানিয়েল

26

তারা ইতিবাচক সংখ্যার সাথে কার্যত সমান। পার্থক্যটি কীভাবে তারা নেতিবাচক সংখ্যাগুলি পরিচালনা করে।

উদাহরণ স্বরূপ:

Math.Floor(2.5) = 2
Math.Truncate(2.5) = 2

Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2

এমএসডিএন লিঙ্কগুলি: - ম্যাথ.ফ্লোয়ার পদ্ধতি - ম্যাথ. ট্র্যাঙ্কেট পদ্ধতি

PS গণিত থেকে সাবধান থাকুন। গোল আপনি এটি যা আশা করেন তা নাও হতে পারে।

"স্ট্যান্ডার্ড" রাউন্ডিং ফলাফলটি পেতে:

float myFloat = 4.5;
Console.WriteLine( Math.Round(myFloat) ); // writes 4
Console.WriteLine( Math.Round(myFloat, 0, MidpointRounding.AwayFromZero) ) //writes 5
Console.WriteLine( myFloat.ToString("F0") ); // writes 5

24

এটি ব্যবহার করে দেখুন, উদাহরণগুলি:

ম্যাথ.ফ্লোয়ার () বনাম ম্যাথ. ট্রান্সকেট ()

Math.Floor(2.56) = 2
Math.Floor(3.22) = 3
Math.Floor(-2.56) = -3
Math.Floor(-3.26) = -4

Math.Truncate(2.56) = 2
Math.Truncate(2.00) = 2
Math.Truncate(1.20) = 1
Math.Truncate(-3.26) = -3
Math.Truncate(-3.96) = -3

এছাড়াও Math.Round ()

   Math.Round(1.6) = 2
   Math.Round(-8.56) = -9
   Math.Round(8.16) = 8
   Math.Round(8.50) = 8
   Math.Round(8.51) = 9

math.floor()

নির্দিষ্ট সংখ্যার চেয়ে কম বা তার সমান বৃহত্তম পূর্ণসংখ্যা ফেরত দেয় s MSDN system.math.floor

math.truncate()

একটি সংখ্যার অবিচ্ছেদ্য অংশ গণনা করে। MSDN system.math.truncate



15

Math.Floor(): সুনির্দিষ্ট ডাবল-স্পষ্টতা ভাসমান-পয়েন্ট সংখ্যার চেয়ে কম বা তার সমান বৃহত্তম পূর্ণসংখ্যা প্রদান করে।

Math.Round(): নিকটতম পূর্ণসংখ্যার বা নির্দিষ্ট ভগ্নাংশের নির্দিষ্ট সংখ্যার মানকে গোল করে।


1
ওপি Floor()এবং Truncate()না Floor()এবং এর মধ্যে পার্থক্য সম্পর্কে জিজ্ঞাসা করেছিল Round()
রবার্ট কলম্বিয়া

5

Math.floor()সর্বদা গোল হয়ে যাবে অর্থাত্‍, এটি আরও কম পূর্ণসংখ্যা প্রদান করে। যদিও round()নিকটতম পূর্ণসংখ্যা ফিরে আসবে

math.floor ()

নির্দিষ্ট সংখ্যার চেয়ে কম বা তার সমান বৃহত্তম পূর্ণসংখ্যা ফেরত দেয় s

math.truncate ()

একটি সংখ্যার অবিচ্ছেদ্য অংশ গণনা করে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.