জাভাতে লং থেকে ডাবল রূপান্তর


93

কোনও Longডাটা টাইপকে Doubleবা রূপান্তর করার কোনও উপায় আছে কি double?

উদাহরণস্বরূপ, আমার 15552451Lএকটি doubleডেটা ধরণে রূপান্তর করা দরকার ।

উত্তর:


137

আপনি সহজভাবে করতে পারেন:

double d = (double)15552451L;

অথবা আপনি লং অবজেক্ট থেকে দ্বিগুণ হিসাবে পেতে পারেন:

Long l = new Long(15552451L);
double d = l.doubleValue();

6
সেখানে কোনও স্ট্রিং পার্সিংয়ের দরকার নেই: Long.valueOf(15552451L).doubleValue()আপনি যদি যেতে চান তবে Longdoubleআপনি যে কোনও অটো / আনবক্সিং করছেন তা বাদ দিয়ে এটি অভ্যন্তরীণভাবে কাস্ট হিসাবে একই নোট করুন ।
জো কেয়ার্নি

4
আমি করেছিলাম. এটি করার জন্য একটি স্ট্রিংকে পার্স করা (এখন উত্তরের বাইরে সম্পাদিত) প্রস্থের বহু আদেশ দ্বারা কর্মক্ষমতা হ্রাস পাবে। বক্সিং কম ব্যয়বহুল তবে তবুও এড়ানো মূল্যবান, বিশেষত এরকম ক্ষেত্রে (ব্যবহার করা new) যেখানে এটি দূরে রাখা যায় না।
জো কেয়ার্নি

আমি মনে করি উদাহরণটি দেখানোর কথা ছিল যে আপনি লং -> ডাবল থেকে পেতে পারেন।
দীর্ঘটি

4
উত্তরের উদাহরণটি দেওয়া হয়েছে যে এখন সম্পাদনা করা আরও যুক্তিসঙ্গত মনে হচ্ছে। আমি স্ট্রিংয়ের মাধ্যমে মান থেকে দ্বিগুণ রূপান্তরটি ভাল অনুশীলন করি না। আমি ভাবতাম যে মোটামুটি নিরবচ্ছিন্ন হতে হবে।
জো কার্নে

4
আপনার স্পষ্টভাবে কাস্ট করার দরকার নেই। এটি কেবলমাত্র কাজ করে:double d = 15552451L;
কিউটমাচাইন

20

সরল castালাই?

double d = (double)15552451L;

এবং এটি যদি আক্ষরিক হয়15552451d
জোন ফ্রিডম্যান

4
এমনকি আমি মনে করি একটি কাস্ট প্রয়োজনীয় নয়, আপনি এর মতো দীর্ঘ মান সহ একটি ডাবল তৈরি করতে পারেন: "ডাবল ডি = 1234 এল;"।
ক্রুশাম

সম্ভবত না - তবে প্রশ্নটি কাস্টিংয়ের মতো ধারণার প্রবর্তনকে পরিকল্পিত করার পক্ষে যথেষ্ট প্রাথমিক।
জিম ব্রিসম

8

ইতিমধ্যে উল্লিখিত হিসাবে, আপনি কেবল দ্বিগুণ করতে দীর্ঘ কাস্ট করতে পারেন। তবে লম্বা থেকে দ্বিগুণ রূপান্তর সম্পর্কে সতর্ক থাকুন কারণ লম্বা থেকে দ্বিগুণ জাভাতে সংকীর্ণ রূপান্তর

দ্বিগুণ থেকে টাইপ দীর্ঘ রূপান্তরকরণের জন্য একটি -৪-বিট ফ্লোটিং-পয়েন্ট মান থেকে -৪-বিট পূর্ণসংখ্যার উপস্থাপনায় একটি অনানুষ্ঠানিক অনুবাদ দরকার। আসল রান-টাইম মানের উপর নির্ভর করে তথ্য হারিয়ে যেতে পারে।

যেমন নীচের প্রোগ্রামটি 0 টি নয় 1 টি মুদ্রণ করবে

    long number = 499999999000000001L;
    double converted = (double) number;
    System.out.println( number - (long) converted);

আপনার লিঙ্কটি বিপরীতে বলেছে যে, দ্বিগুণ থেকে
দীর্ঘটি

4

আপনি কি বাইনারি রূপান্তর খুঁজছেন?

double result = Double.longBitsToDouble(15552451L);

এটি আপনাকে doubleআক্ষরিকের মতো একই বিট প্যাটার্ন সহ দেয় long

বাইনারি বা হেক্সাডেসিমাল আক্ষরিক কাজগুলি এখানে আসবে। এখানে কিছু উদাহরণঃ.

double nan = Double.longBitsToDouble(0xfff0000000000001L);
double positiveInfinity = Double.longBitsToDouble(0x7ff0000000000000L);
double positiveInfinity = Double.longBitsToDouble(0xfff0000000000000L);

( Double.longBitsToDouble (দীর্ঘ) দেখুন )

আপনি longফিরে পেতে পারেন

long bits = Double.doubleToRawLongBits(Double.NaN);

( Double.doubleToRawLongBits (ডাবল) দেখুন )


এটি অন্য কিছু করে, দেখুন জেডোক ( ডকস.ওরাকল .com/ javase/ 6/ docs/ api/ java/ lang/ )
জিরি

হ্যাঁ. তবে তিনি কীভাবে রূপান্তর longকরতে চান তা তিনি নির্দিষ্ট করেননি double(আমার মনে হয় জাভা ব্যবহার করার সময় learnালাই আপনার প্রথম জিনিসগুলির মধ্যে একটি) হতে পারে সে মানের doubleমতো একই বিট প্যাটার্ন সহ একটি পেতে চায় long। ভাল, আমি জানি না। সুতরাং আমি শুধু উত্তর দিয়েছি।
pvorb

আমি অতিরিক্ত তথ্য যুক্ত করেছি, সুতরাং উত্তরটি আরও মূল্যবান।
pvorb

3
Long i = 1000000;
String s = i + "";
Double d = Double.parseDouble(s);
Float f = Float.parseFloat(s);

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


4
আপনি উত্তর হিসাবে পোস্ট করছেন এমন কোডটির একটি ব্যাখ্যা যুক্ত করা সর্বদা ভাল, যাতে এটি দর্শকদের এটি কেন ভাল উত্তর তা বুঝতে সহায়তা করবে।
এগারিসন

1

দীর্ঘ তারিখের ধরণ বলতে কী বোঝ?

আপনি একটি দীর্ঘ দ্বিগুণ করতে পারেন:

double d = (double) 15552451L;

আমি অনুমান করি যে একটি দীর্ঘ তারিখ "মঙ্গলবার, 19 সেপ্টেম্বর 24893243092333" এর মতো কিছু হবে।
তিমু লইস্তি

1

আপনি এরকম কিছু চেষ্টা করতে পারেন:

long x = somevalue;

double y = Double.longBitsToDouble(x);

0

আমি মনে করি এটি আপনার পক্ষে ভাল।

BigDecimal.valueOf([LONG_VALUE]).doubleValue()

কিভাবে এই কোড সম্পর্কে? : ডি

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