ডাবল ইনট রূপান্তর


156

সবচেয়ে ভালো উপায় একটি রূপান্তর করতে কি doubleএকটি থেকে int? একটি castালাই ব্যবহার করা উচিত?


7
"সেরা" সংজ্ঞা দিন। আপনি যদি উপরে / নিচে রাউন্ডিং ইত্যাদি চান তা নির্ভর করে
RPM1984

8
@ আরপিএম 1984: সংজ্ঞায়িত করুন etc.:)
আর্মেন ​​সিরুনিয়ান

18
@ আর্মেন ​​- স্পর্শ` :) যাইহোক সত্যিই কিছু আসে যায় না - স্কিটি এখানেই রয়েছে, অন্য কিছু নয়।
RPM1984

উত্তর:


237

আপনি যদি একটি ডিফল্ট ছাঁটাই-শূন্যের দিকে আচরণ চান তবে আপনি একটি কাস্ট ব্যবহার করতে পারেন। অন্যথা, আপনি ব্যবহার করতে চাইতে পারেন Math.Ceiling, Math.Round, Math.Floorইত্যাদি - যদিও আপনি এখনও পরে একটি ঢালাই করতে হবে।

ভুলে যাবেন না যে এর পরিসীমা এর ব্যাপ্তির intচেয়ে অনেক ছোট double। থেকে একটি ঢালাই doubleকরার intযদি মান পরিসীমা বাইরে একটি ব্যতিক্রম নিক্ষেপ করা হবে না intএকটি কল যেহেতু, একটি অবারিত প্রেক্ষাপটে Convert.ToInt32(double)ইচ্ছা। Theালাইয়ের ফলাফল (একটি চেক না হওয়া প্রসঙ্গে) স্পষ্টভাবে অনির্ধারিত হয় যদি মানটি সীমার বাইরে থাকে।


24
@ ব্যবহারকারী: intআপনি 32 বা 64 বিট মেশিন ব্যবহার করছেন তা নির্বিশেষে একটি এর আকার সর্বদা 32 বিট থাকে।
জোরেেন

3
এবং ডাবলস একটি 64 বিট ইন্টের চেয়েও অনেক বেশি হুগার হতে পারে।
অ্যাড্রিয়ান রত্নপালা

7
আমার মত সি # নুবসের জন্য: ম্যাথ এবং কনভার্ট উভয়ই সিস্টেমের অংশ। সুতরাং সম্পূর্ণ উত্তরটির মতো দেখাচ্ছে:intVal = System.Convert.ToInt32(System.Math.Floor(dblVal));
ক্রিস

9
@ ব্যবহারকারী 1290746: এটি কাজ করবে, তবে আপনি সাধারণত using System;ফাইলটির শীর্ষে থাকতেন , যে মুহুর্তে এটি ঠিক হতে পারেintVal = Convert.ToInt32(Math.Floor(dblVal));
জন স্কিটি

3
@ ব্যবহারকারী 1290746: তবে সেক্ষেত্রে আমি মনে করি না সঠিক সমাধান হ'ল লোকদের পুরোপুরি যোগ্যতাসম্পন্ন নাম ব্যবহার করার পরামর্শ দেওয়া - usingনির্দেশিকা সম্পর্কে আরও ভাল সমাধানটি শিখাই।
জন স্কিটি

39

আপনি যদি কাস্ট ব্যবহার করেন, অর্থাৎ, (int)SomeDoubleআপনি ভগ্নাংশটি কেটে ফেলবেন। এটি হ'ল SomeDouble4.9999 হলে ফলাফলটি 4 হবে, 5 নয় int আপনি যদি গোলটি ব্যবহার করতে চানMath.Round


34

হ্যাঁ, কেন না?

double someDouble = 12323.2;
int someInt = (int)someDouble;

Convertক্লাস ব্যবহার করে খুব ভাল কাজ করে।

int someOtherInt = Convert.ToInt32(someDouble);

7

Convert.ToInt32 রূপান্তর করার সেরা উপায়


এটি একটি সাধারণভাবে অনিরাপদ ফাংশন কারণ এটি কেবল কিছু গ্রহণ করে।
Ant_222

4

সহজ উপায় হল সহজভাবে ব্যবহার করা Convert.ToInt32। এটি দ্রুত এবং সঠিকভাবে রাউন্ডও রয়েছে।

কেন এটিকে আরও জটিল করে তোলেন?


2

এখানে একটি সম্পূর্ণ উদাহরণ

class Example 
{    
  public static void Main() 
  {    
    double x, y; 
    int i; 

    x = 10.0; 
    y = 3.0; 

    // cast double to int, fractional component lost (Line to be replaced) 
    i = (int) (x / y); 
    Console.WriteLine("Integer outcome of x / y: " + i); 
  }    
}

আপনি যদি সংখ্যাটি কাছাকাছি সংখ্যার কাছাকাছি করতে চান তবে নিম্নলিখিতটি করুন:

i = (int) Math.Round(x / y); // Line replaced



0

আমার উপায়গুলি হ'ল:

 - Convert.ToInt32(double_value)
 - (int)double_value
 - Int32.Parse(double_value.ToString());

11
আপনি কি মনে করেন না যে তৃতীয় উপায়টি অহেতুক জটিল এবং ধীর?
আর্মেন ​​সিরুনিয়ান

6
তৃতীয়টি ভগ্নাংশের অংশগুলির সাথে ডাবলসের সাথে কাজ করবে না। যেমন,double_value = 0.1
জেফ মার্কাডো

আমি মনে করি আপনি ম্যাথ ব্যবহার করতে পারেন। ফ্লোর।
লিন্ডেক্সি

0
label8.Text = "" + years.ToString("00") + " years";

আপনি যখন এটি কোনও লেবেলে বা কোনও কিছুতে প্রেরণ করতে চান এবং আপনি কোনও ভগ্নাংশ উপাদান চান না, এটি সেরা উপায়

label8.Text = "" + years.ToString("00.00") + " years";

আপনি যদি কেবল 2 দিয়ে চান তবে এবং সর্বদা এটির মতো

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