স্ট্রিংটিকে জাভাতে দ্বিগুণ করুন


286

আমি কিভাবে রূপান্তর করতে পারেন Stringহিসাবে যেমন "12.34"একটি থেকে doubleজাভা?


1
এই তিনটি উত্তর মূলত কেবল কয়েক বছর আগে পোস্ট করা শীর্ষ-ভোটের উত্তরগুলির সদৃশ হয়েছে তা নিশ্চিত হয়ে যায় যে এর প্রচুর পরিমাণ আছে।
বার্নহার্ড বার্কার

উত্তর:


471

আপনি ব্যবহার করতে পারেন Double.parseDouble()একটি রূপান্তর করতে Stringএকটি থেকে double:

String text = "12.34"; // example String
double value = Double.parseDouble(text);

আপনার ক্ষেত্রে দেখে মনে হচ্ছে আপনি চান:

double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());

সুতরাং আমার কোডিংটি দ্বিগুণ হওয়া উচিত = ডাবল. পার্সডুবিল (স্ট্রিং);?
টিনিবেলি

4
@ টিনিবেলি: হ্যাঁ মনে হচ্ছে আপনি চাইছেন:double total = Double.parseDouble(jlbTotal.getText());
হোয়াইটফ্যাঙ্গ 34

1
@ টিনিবেলি: আপনি যে স্ট্রিংটি দ্বিগুণ করার জন্য পার্স করতে চান তা থেকে আপনাকে পাঠ্যের অংশটি বের করতে হবে। আপনার মামলার জন্য আপনি এটি করতে পারেন এমন এক উপায়, যদিও আমি গ্যারান্টি দিতে পারি না যে এটি সমস্ত কিছুর জন্য কার্যকর হবে: double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));- এটি মূলত এমন সমস্ত অক্ষরকে প্রতিস্থাপন করে যা কোনও সংখ্যা নয় বা .কিছুই নয়, কেবলমাত্র সংখ্যা এবং দশমিক পয়েন্টকে বিশ্লেষণ করতে ছাড়বে।
হোয়াইটফ্যাং 34

4
মূল্য গণনার জন্য ডাবল ব্যবহার করা ভাল নয়।
বোঝো

2
এখানে প্রলোভিতদের জন্য Doubleআদিম ধরণের doubleব্যবহারের পরিবর্তে শ্রেণির ফলাফল অনুসন্ধান করার সময় Double.valueOf(String)
Pshemo

48

দশমিক মানগুলিতে স্ট্রিংকে পার্স করতে আপনার যদি সমস্যা হয় তবে আপনাকে "," সংখ্যায় "" প্রতিস্থাপন করতে হবে।


String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );

2
অন্য বিকল্প: ডেসিমালফর্ম্যাট ডিএফ = নতুন ডেসিমালফর্ম্যাট (); ডেসিমালফর্ম্যাটসিম্বলস এসএফএস = নতুন ডেসিমালফর্ম্যাটসাইম্বলস (); sfs.setDecimalSeparator ( ','); df.setDecimalFormatSymbols (SFS); df.parse (নম্বর);
রবার্তিয়ানো

37

স্ট্রিংটিকে আবার ডাবলে রূপান্তর করতে, নীচের চেষ্টা করুন

String s = "10.1";
Double d = Double.parseDouble(s);

পার্সডুবল পদ্ধতিটি পছন্দসই প্রভাব অর্জন করবে এবং ডাবলভ্যালুওফ () পদ্ধতিটিও এটি করবে।


2
না, স্ট্রিং.ভ্যালুওফ (কিছু) কোনও কিছুর স্ট্রিং প্রতিনিধিত্ব করে: যদি কোনও বিল্ট-ইন টাইপ হয় বা যদি এটি কোনও অবজেক্ট হয় এবং এটি শূন্য হয়, অন্যথায় এটি সামান্য অবজেক্ট.টোস্ট্রিং () এর সমতুল্য। স্ট্রিং থেকে ডাবল পেতে অন্য উত্তরের মতো এটি অন্যভাবে করতে হয় (Double.valueOf (কিছু স্ট্রিং) একটি ডাবল দেয় এবং Double.parseDouble (someString) একটি ডাবল দেয়))
জোহান পেট্রাক

36
double d = Double.parseDouble(aString);

এটি স্ট্রিং এস্ট্রিংকে ডাবল ডিতে রূপান্তর করবে।


এস্ট্রিং কি বোঝায়? আপনি আমাকে আরও ব্যাখ্যা করতে সাহায্য করতে পারেন?
টিনিবেলি

2
এস্ট্রিং কেবল একটি স্ট্রিং। আরও নির্দিষ্টভাবে স্ট্রিংটি আপনি একটি সংখ্যায় রূপান্তর করতে চান।
Andreas Vinter-Hviid

30

ব্যবহার new BigDecimal(string)। এটি পরে যথাযথ গণনার গ্যারান্টি দেবে।

থাম্বের নিয়ম হিসাবে - সর্বদা BigDecimalঅর্থের মতো সংবেদনশীল গণনার জন্য ব্যবহার করুন ।

উদাহরণ:

String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);

20

আপনাকে কেবল ডাবল ব্যবহার করে স্ট্রিংয়ের মানগুলি পার্স করতে হবে

String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);

14

উপরে রবার্তিয়ানো থেকে উদ্ধৃতি উদ্ধৃত আবার - কারণ এটি এখন পর্যন্ত সবচেয়ে বহুমুখী এবং স্থানীয়করণ অভিযোজিত সংস্করণ। এটি একটি সম্পূর্ণ পোস্টের দাবিদার!

অন্য বিকল্প:

DecimalFormat df = new DecimalFormat(); 
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(','); 
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();


4

আরও একটি উপায় আছে।

Double temp = Double.valueOf(str);
number = temp.doubleValue();

ডাবল একটি শ্রেণি এবং "টেম্প" একটি পরিবর্তনশীল। "সংখ্যা" হ'ল চূড়ান্ত নম্বর যা আপনি সন্ধান করছেন।


1
অটোবক্সিং / আনবক্সিংয়ের জন্য জাভা 5 থেকে আপনি কেবল ডাবলকে ডাবল নির্ধারণ করতে পারেন। সম্পর্কিত: Double.parseDouble (স্ট্রিং) এবং Double.valueOf (স্ট্রিং) এর মধ্যে পার্থক্য কী?
বার্নহার্ড বার্কার

3

এই আমি কি করতে হবে

    public static double convertToDouble(String temp){
       String a = temp;
       //replace all commas if present with no comma
       String s = a.replaceAll(",","").trim(); 
      // if there are any empty spaces also take it out.          
      String f = s.replaceAll(" ", ""); 
      //now convert the string to double
      double result = Double.parseDouble(f); 
    return result; // return the result
}

উদাহরণস্বরূপ আপনি স্ট্রিং "4 55,63। 0" ইনপুট দিলে আউটপুট ডাবল সংখ্যা 45563.0 হবে


2

Double.parseDouble()আশেপাশের try/catchব্লক ব্যতীত ব্যবহার করা সম্ভাব্য কারণ হতে পারেNumberFormatException ইনপুট ডবল স্ট্রিং একটি বৈধ বিন্যাস সঙ্গে মানানসই ছিল না।

পেয়ারা এর জন্য একটি ইউটিলিটি পদ্ধতি প্রস্তাব করে যা nullআপনার স্ট্রিংকে বিশ্লেষণ করা যায় না এমন ক্ষেত্রে ফিরে আসে ।

https://google.github.io/guava/releases/19.0/api/docs/com/google/common/primitives/Doubles.html#tryParse(java.lang.String)

Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);

রানটাইমের সময়, একটি বিকৃত স্ট্রিং ইনপুট ফলন nullবরাদ্দ করা হয়valueDouble


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

@ টম এটি নাল মানকে ডাবল টাইপ প্রদান করে যা 0.0 ডাবল প্রকারে রূপান্তরিত হতে পারে - ডিওয়াইএস 13 সেকেন্ড পূর্বে সম্পাদনা করুন
ডিওয়াইএস

1
এটি পারে, তবে স্বয়ংক্রিয়ভাবে নয় এবং আপনার স্নিপেট এটি করতে ব্যর্থ।
টম

1

কোনও স্ট্রিং নম্বরকে দ্বিগুণ রূপান্তর করতে এটি ব্যবহার করুন যখন আপনার প্রয়োজন কেবল ডাটা টাইপটিকে নাম্বার এবং num2 থেকে ইনটে রূপান্তর করুন; ইঞ্জিনের সাথে যে কোনও স্ট্রিংয়ের দ্বিগুণ জন্য সমস্ত মামলা নিয়েছে: "বদর কান্দেল"

public static double str2doubel(String str) {
    double num = 0;
    double num2 = 0;
    int idForDot = str.indexOf('.');
    boolean isNeg = false;
    String st;
    int start = 0;
    int end = str.length();

    if (idForDot != -1) {
        st = str.substring(0, idForDot);
        for (int i = str.length() - 1; i >= idForDot + 1; i--) {
            num2 = (num2 + str.charAt(i) - '0') / 10;
        }
    } else {
        st = str;
    }

    if (st.charAt(0) == '-') {
        isNeg = true;
        start++;
    } else if (st.charAt(0) == '+') {
        start++;
    }

    for (int i = start; i < st.length(); i++) {
        if (st.charAt(i) == ',') {
            continue;
        }
        num *= 10;
        num += st.charAt(i) - '0';
    }

    num = num + num2;
    if (isNeg) {
        num = -1 * num;
    }
    return num;
}


0

আপনি Double.parseDouble () ব্যবহার করতে পারেন;

String num = "10.1";
Double x = Double.parseDouble(num);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.