সি কিভাবে ইনট ফ্লোট রূপান্তর করতে


উত্তর 1:

প্রথমত, যদি কোনও ফ্লোটের অ-ভগ্নাংশের অংশটি কোনও int হিসাবে উপস্থাপনযোগ্য হয় তবে এমন একটি অন্তর্নিহিত রূপান্তর যা "শূন্যের দিকে বৃত্তাকারে" (অর্থাত্ ভগ্নাংশকে ড্রপ করে) উপস্থিত থাকে:

ইন্ট আর (ফ্লোট এফ) { int ফলাফল = চ;প্রত্যাবর্তনের ফলাফল; // আপনি কেবল "রিটার্ন এফ" লিখতে পারেন; পরিবর্তে.}

মনে রাখবেন যে যদি int ফলাফলটির প্রতিনিধিত্ব করতে না পারে তবে "আচরণ অপরিজ্ঞাত" (যার অর্থ আপনার প্রোগ্রামটি যতটা স্ট্যান্ডার্ড সম্পর্কিত, তেমন কিছু করার অনুমতি দেওয়া হয়েছে)।

যদি আপনি যে রাউন্ডিংটি চান তা না হয় তবে বেশ কয়েকটি স্ট্যান্ডার্ড লাইব্রেরি ঘোষিত রয়েছে যে কৌশল করতে পারেন। প্রথমে সহজতর:

  • সিল্ফ / ফ্লোরফ যথাক্রমে উপরে বা নীচে। ফলাফলটি এখনও ভাসমান, আপনি কোন তথ্য পেতে উপরে বর্ণিত অন্তর্নিহিত রূপান্তরটি ব্যবহার করতে পারেন।
  • রাউন্ডফ, যা নিকটতম পূর্ণসংখ্যার মানকে গোল করে, .5 কেসটি শূন্য থেকে দূরে করা হয় (সুতরাং 1.5F কে 2.0x এফ করে নেওয়া হয়, তবে -3.5 এফ -4.0 এফকে গোল করা হয়)।
  • লাউন্ডফ এবং লাউলাউন্ডফ, যা রাউন্ডফের অনুরূপ, তবে যথাক্রমে দীর্ঘ বা দীর্ঘ দীর্ঘ ফল উত্পাদন করে produce যদি তাত্ত্বিক ফলাফল ফলাফলের ধরণের দ্বারা প্রতিনিধিত্ব করা না যায় তবে প্রকৃত ফলাফলটি অনির্দিষ্ট করা হয় (যেমন, এটি সেই ধরণের "যাই হোক না কেন" মান হতে পারে)। ভুলটি EDOM বা ERANGE এ সেট করা যেতে পারে।
  • ট্রানকুফ, যা উপরে বর্ণিত অন্তর্নিহিত রূপান্তরটির অনুরূপ, ফল ব্যতীত এখনও একটি ফ্লোট।

অতিরিক্ত রাউন্ডিং ফাংশন রয়েছে (এতেও রয়েছে) ) যার বৃত্তাকারী আচরণটি "বর্তমান বৃত্তাকার দিক" দ্বারা নির্ধারিত হয় ফেইসটাউন্ডে কল দ্বারা প্রতিষ্ঠিত (একটি ফাংশন ঘোষিত) , একটি শিরোনাম যা "ভাসমান-পয়েন্ট পরিবেশ" এর বিভিন্ন সেটিংসের সাথে কাজ করে। এই ফাংশনটির আর্গুমেন্ট অবশ্যই মানক ম্যাক্রোগুলির মধ্যে একটি FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, বা FE_UPWARD এর মান হতে পারে, তবে সংশ্লিষ্ট রাউন্ডিং মোড অনুপলব্ধ থাকলে those ম্যাক্রোগুলির মধ্যে কোনও একটিই অপরিজ্ঞাত হতে পারে। আপনি ফেজগ্রাউন্ড () দিয়ে বর্তমান রাউন্ডিং মোডটি পুনরুদ্ধার করতে পারেন। যে ফাংশনগুলি এটি বিবেচনায় নেয় সেগুলি হ'ল:

  • নিকটেইন্টফ এবং রিন্ট্ফ, যা রাউন্ডফের মতো হয় except কেসটি বর্তমান বৃত্তাকার দিক অনুসরণ করে (এবং রিন্টফ একটি "অযোগ্য" ফলাফলের ইঙ্গিত দিয়ে একটি ভাসমান-পয়েন্ট ব্যতিক্রম বাড়িয়ে তুলতে পারে)।
  • lrintf এবং llitterf, যা কাছাকাছিintf অনুরূপ, তবে যথাক্রমে একটি দীর্ঘ বা দীর্ঘ দীর্ঘ ফলাফল উত্পাদন করে। যদি তাত্ত্বিক ফলাফল ফলাফলের ধরণের দ্বারা প্রতিনিধিত্ব করা না যায় তবে প্রকৃত ফলাফলটি অনির্দিষ্ট করা হয় (যেমন, এটি সেই ধরণের "যাই হোক না কেন" মান হতে পারে)। ভুলটি EDOM বা ERANGE এ সেট করা যেতে পারে।

উত্তর 2:

সবচেয়ে সহজ উপায়টি হল x x ((int) (f + 0.5); এটি বেশিরভাগ সময় ধনাত্মক সংখ্যার জন্য কাজ করে। নেতিবাচক সংখ্যার জন্য আপনি 0.5 টি বিয়োগ করতে পারেন। বা

একটি পরম মান ফাংশন এবং একটি বৃত্তাকার ফাংশন সংজ্ঞায়িত করুন:

# নির্ধারিত এবিএস (এক্স) ((এক্স> = 0)? এক্স: - (এক্স))# পূর্ব রাউন্ড (এক্স) (এক্স> = 0)? (ইনট) (এক্স + 0.5): (ইনট) - (এবিএস (এক্স) +0.5)int x = রাউন্ড (চ);

অ্যালগরিদমিক

গাণিতিকভাবে বৃত্তাকার অ্যালগরিদমিক উপায়: 1. কত দশমিক স্থানকে তাত্পর্যপূর্ণ (এন) 2 হিসাবে নেওয়ার সিদ্ধান্ত নিন। সংখ্যাটি 10 ​​^ {- n by দ্বারা ভাগ করুন} (এম) ৩. নিকটতম সম্পূর্ণ সংখ্যা ফলাফল নিন। (1 টি জায়গায় গোল ভাসা)) (প্রশ্ন) ৪. গোলাকার নম্বর পেতে এম * কিউকে গুণিত করুন। (z) 5. পূর্ণসংখ্যায় রূপান্তর করুন: ভগ্নাংশের অংশটি যদি 0.5 হয় তবে ভগ্নাংশের অংশ কেটে 1 যোগ করুন else

কেন এমন করবেন? কারণ সি এর ডিফল্ট হল ভগ্নাংশের অংশটি গোল করে ফেলা, এটি যতই নিকটবর্তী না হয় 1। সুতরাং উল্লেখযোগ্য সংখ্যাগুলি বিবেচনায় নেওয়ার জন্য আপনাকে সংখ্যাকে একটি ক্ষুদ্র পরিমাণে ভাগ করতে হবে। মধ্যবর্তী ফলাফলকে গোল করে আপনি রাউন্ডিং ত্রুটিগুলির যত্ন নেবেন।

সাধারণত: ধনাত্মক সংখ্যার জন্য: দশমিকের দশকের ডানদিকে (দশম স্থান) যদি> = 5 পরবর্তী উচ্চতর অঙ্কের হয় তবে অন্যথায় কেটে ফেলা হবে। negativeণাত্মক সংখ্যা: দশমিকের দশমিক (দশম স্থান) এর ডানদিকে যদি <= 5 কেটে নেওয়া হয়, অন্যথায় পরবর্তী নেতিবাচক অঙ্কে গোল করে round এটি ঠিক .5 ধনাত্মক বা নেতিবাচক প্রান্তের কেসটি যত্ন করে।

/ * উদাহরণস্বরূপ, ভাল এবং খারাপ * /ইন্ট এক্স;ভাসা চ, এম, এন, পি, জে; // ভাল f = -13.486;n = .01; // দুটি জায়গামি = এফ / এন; // মি = -1348.6m = ceilf (m); // মি = -1348.0z = মি / এন; // জেড = -13.48x = (int) z; // এক্স = -13// ভালf = 0.501; n = 0.1; // এক স্থানমি = এফ / এন; // মি = 5.01m = ceilf (m); // মি = 6.0z = মি / এন; // জেড = .6x = (int) z; // এক্স = 1// খারাপ f = 13.486;n = সিল্ফ (চ); // এন = 14.000// খারাপf = -13.486;n = মেঝে (চ); // এন = -14.000// অসঙ্গতির কারণে খারাপf = 0.50; n = সিল্ফ (চ); // এন = 1.0n = মেঝে (চ); // এন = 0.0f = -0.50; n = সিল্ফ (চ); // এন = 0.0n = মেঝে (চ); // এন = -1.0// এখনও ভাল না f = 0.50;n = 0.1; // 1 জায়গামি = এফ / এন; // মি = 5.0m = ceilf (m); // মি = 5.0z = মি / এন; // জেড = 0.5x = (int) z; // এক্স = 0 তেমন ভাল নয়// রাউন্ডফ চেষ্টা করুন f = 0.5;মি = গোলফ (চ); // মি = 1.0পি = রাউন্ডফ (-ফ) // মি = -1.0f = -0.5;মি = গোলফ (চ); // মি = -1.0পি = রাউন্ডফ (-ফ) // মি = 1.0

উত্তর 3:

আপনি টাইপ কাস্টিং ব্যবহার করে এটি করতে পারেন। বাক্য গঠনটি হ'ল-

উদাহরণ:

ভাসা এক্স;

x = 3.14;

int y;

y = (int) x;

প্রিন্টফ ("% d", y);

আউটপুট:

আসলে কি ঘটছিল? আমি একটি বিখ্যাত উপমা নিয়ে এটি ব্যাখ্যা করব।

সম্পূর্ণ বালিতে ভরা বালতি ভেবে দেখুন। এখন ধরুন আপনি একটি মগ আছে আপনি বালতি থেকে সর্বাধিক জল নিতে পারেন? উত্তর- একটি মগ

এখানে বালতিটি ভাসমান (4 বাইট), এবং মগটি ইনট (2 বাইট)। প্রকারের ingালাই ভরাট করার প্রক্রিয়া এবং এটি করার সময় জল (ডেটা) নষ্ট হয়ে যায়।

আশাকরি এটা সাহায্য করবে;)


উত্তর 4:

কোনও ভাসমান নম্বর পূর্ণসংখ্যায় রূপান্তর করা যায় না। তবে একটি পূর্ণসংখ্যা তার ফর্ম্যাট ব্যবহার করে ফ্লোটে রূপান্তরিত হতে পারে

স্পেসিফায়ার.এএস

নীচের উদাহরণে প্রদর্শিত একটি ভাসাটি পূর্ণসংখ্যার ধরণের ভেরিয়েবলের মধ্যে প্রেরণ করা যেতে পারে inte মানটি পূর্ণসংখ্যার ভেরিয়েবলে রূপান্তরিত হওয়ার পরে এটি ভাসমান মানে রূপান্তরিত হয়।

# অন্তর্ভুক্ত

অকার্যকর সংখ্যা (ইন্ট ই)

{

প্রিন্টফ ("% d", ই);

}

প্রধান প্রধান ()

{

ভাসমান সি = 9.0000;

নাম (গ);

}

উপরের উদাহরণে আমরা পূর্ণসংখ্যার ভেরিয়েবলের কাছে ভাসমান মান পাস করেছি। উপরের প্রোগ্রামের আউটপুট 9 হবে।


উত্তর 5:

রাউন্ডিংয়ের বেশ কয়েকটি পন্থা রয়েছে। এই লাইব্রেরি ফাংশনগুলি দেখুন, যা সি 99 এর পরে পাওয়া যায়:

  • রাউন্ডফ, যা একটি ফ্লোট দেয় যা আর্গুমেন্টের নিকটতম অবিচ্ছেদ্য মান, অর্ধেকটি ক্ষেত্রে শূন্য থেকে দূরে হয়ে যায়।
  • তলদেশ, যা নীচের দিকে গোলাকার, বৃহত্তম অবিচ্ছেদ্য মানটি প্রদান করে যা আর্গুমেন্টের চেয়ে বড় নয়।
  • সিল্ফ, যা উপরের দিকে বৃত্তাকারে, ক্ষুদ্রতম অবিচ্ছেদ্য মানটি প্রদান করে যা আর্গুমেন্টের চেয়ে কম নয়।
  • ফেজেগ্রাউন্ড দ্বারা নির্দিষ্ট গোলাকার দিকটি ব্যবহার করে (যা বর্তমান ভাসমান বিন্দু পরিবেশে উল্লিখিত গোলাকার দিক নির্দেশ মোড নির্দেশ করে এমন একটি মান দেয় যা) অবিচ্ছেদ্য মানের সাথে গোল করে to

এই ফাংশনগুলির প্রতিটি ফ্লোট আর্গুমেন্ট গ্রহণ করে এবং একটি ভাসমান ফলাফল প্রদান করে, যা আপনি তারপরে ইন্টিতে কাস্ট করতে পারেন।


উত্তর 6:

গণিতের মধ্যে () ফাংশনটি কাজ করবে will নিম্নলিখিতগুলি ঠিকঠাক করে কাজ করতে হবে (যদিও আমি এটি আসলে সংকলন করি নি):

# অন্তর্ভুক্ত / * ম্যাথ এইচ। থেকে বৃত্তাকার জন্য প্রোটোটাইপ আমদানি করুন * ডাবল রাউন্ড (ডাবল); * /# অন্তর্ভুক্ত int প্রধান () { ভাসা i = 5.4, j = 5.6; / * নিম্নলিখিতগুলির প্রতিটি স্পষ্টতই ফ্লোটটিকে দ্বিগুণ করে * প্যারামিটারের জন্য এবং তারপরে ডাবল ফলাফলটি নিরাপদে থাকতে পারে* নির্ভুলতা ক্ষতি ছাড়াই ইন্টি কাস্ট করা। অবশ্যই তুমি * ইন্টের পরিবর্তে দীর্ঘ ব্যবহার করতে চাইলেও এটি নির্ভর করবে আপনার প্রত্যাশিত ব্যাপ্তিতে * /int ii = (int) বৃত্তাকার (i); / * হররিডের পরিবর্তনশীল নাম তবে এটি কেবল একটি উদাহরণ। * / int jj = (int) বৃত্তাকার (j);/ * এখন মানগুলি মুদ্রণ করুন। * / প্রিন্টফ ("% f এর রাউন্ড% f যা এটি% d \ n", i, রাউন্ড (i), ii); প্রিন্টফ ("% f এর রাউন্ড% f যা এটি% d \ n", জে, গোল (জে), জেজে); প্রত্যাবর্তন 0;}

উদাহরণ থেকে সংশোধন করা হয়েছে:

সি - বৃত্তাকার () ফাংশন


উত্তর 7:

ভাসা নম্বরটি পূর্ণসংখ্যার সাথে রূপান্তর করার জন্য আপনাকে টাইপ কাস্টিং ব্যবহার করতে হবে (টাইপকাস্টিং বা টাইপ রূপান্তর, কোনও সত্তাকে এক ডাটা টাইপ থেকে অন্য ডাটাতে পরিবর্তন করার পদ্ধতি)।

# অন্তর্ভুক্ত অকার্যকর প্রধান () { ভাসমান ভার 1 = 3.141592653589793238; int var2;var2 = (int) var1; // টাইপকাস্টিং (ফ্লোটকে পূর্ণসংখ্যায় রূপান্তর করা) প্রিন্টফ ("পূর্ণসংখ্যার মান:% d", বর্ণ 2);}

আউটপুট


উত্তর 8:

উত্তর: (পূর্ববর্তী)

আপনি সহজেই পূর্ণসংখ্যাতে ফ্লোট রূপান্তর করতে castালাই (int) ব্যবহার করতে পারেন।

এটার মত

your_variable = (int) your_variable

এটি (ইন) এর কাজটি কী?

এটি সংকলককে বলে যে আপনি ম্যালোকের দ্বারা প্রদত্ত মানটিকে একটি পূর্ণসংখ্যার পয়েন্টার হিসাবে বিবেচনা করতে চান।


উত্তর 9:
ভাসা a = 2.33;int b = (int) a;প্রিন্টফ ("% d", খ);

আউটপুট হবে: 2


উত্তর 10:

স্বয়ংক্রিয় প্রকারের ingালাই সংঘটিত হয় যখন,

  • দুটি ধরণের সামঞ্জস্যপূর্ণ
  • লক্ষ্য প্রকারটি উত্স প্রকারের চেয়ে বড়

উদাহরণ:

পাবলিক ক্লাস পরীক্ষা{ পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) { int i = 100; দীর্ঘ l = i; // কোনও সুস্পষ্ট ধরণের কাস্টিং প্রয়োজন requiredভাসা চ = l; // কোনও সুস্পষ্ট ধরণের কাস্টিং প্রয়োজন required System.out.println ("মান মান" + i); System.out.println ("দীর্ঘ মান" + এল); System.out.println ("ফ্লোট মান" + চ); } }

আউটপুট:

ইন্ট মান 100দীর্ঘ মূল্য 100ভাসমান মান 100.0

উত্তর 11:

ভাল, আপনি একটি ফ্লোট মানকে পূর্ণসংখ্যায় রূপান্তর করতে 2 টি ফাংশন, "ফ্লোর ()" এবং "সিল ()" ব্যবহার করতে পারেন। উদাহরণ: -

ভাসা a = 3.5;

int b = মেঝে (ক); // এটি "b" থেকে 3 তে সেট করবে

int b = ceil (a); // এটি 4 "এ" সেট করবে