ডাবল স্ট্রিং রূপান্তর


201

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

এখানে আমার কোড:

double total = 44;
String total2 = Double.toString(total);

আমি কি কিছু ভুল করছি বা আমি এখানে একটি পদক্ষেপ মিস করছি।

NumberFormatExceptionএটি রূপান্তর করার চেষ্টা করার সময় আমি ত্রুটি পেয়েছি ।

totalCost.setOnTouchListener(new OnTouchListener() {
  public boolean onTouch(View v, MotionEvent event) {
    try {
      double priceG = Double.parseDouble(priceGal.getText().toString());
      double valG = Double.parseDouble(volGal.toString());
      double total = priceG * valG;
      String tot = new Double(total).toString();
      totalCost.setText(tot);
    } catch(Exception e) {
      Log.e("text", e.toString());
    }

    return false;
  }         
});

আমি এটি একটি টুচলিস্টেনারে করার চেষ্টা করছি। আমি আরও কোড পোস্ট করি, মূলত যখন ব্যবহারকারী এডিটেক্সট বক্সটি স্পর্শ করে আমি তথ্যটি একটি সম্পাদনা সম্পাদনা বাক্স পূরণ করতে গণনা করতে চাই।


4
আমার কাছে ভাল লাগছে, আপনি কোন সমস্যার মুখোমুখি হয়ে গেছেন?
এমবিডিডি

2
আপনি কি বাস্তব কোডটি কার্যকর করছেন? এই লাইন নিখুঁত কাজ।
এমক্যাব্রাল

1
Double.toString (ডাবল) এমনকি নাম্বার ফর্ম্যাট এক্সেপশনও ছুঁড়ে ফেলতে পারে না - আপনি কি নিশ্চিত যে ব্যতিক্রম অন্য কোথাও থেকে ছোঁড়া হচ্ছে না?
র্যান্ডম 832

1
অন্য কিছু থাকতে হবে, এটি ঠিক কাজ করা উচিত। ideone.com/btGrv
কেভিন

উত্তর:


453
double total = 44;
String total2 = String.valueOf(total);

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


22
নিম্নলিখিতটি মনে রাখুন যদি মোট = 1234567890123456 হয় তবে স্ট্রিংটি "1.234567890123456E15" হয়ে যায় যা আপনি যা চান তা প্রায়শই হয় না
ব্যবহারকারী 1735824

6
উপরের জন্য কোন সমাধান?
প্রশান্ত দেববাদ্বর

6
@ প্রশান্তদেববাদ্বর হ্যাঁ: NumberFormat fmt = NumberFormat.getInstance(); fmt.setGroupingUsed(false); fmt.setMaximumIntegerDigits(999); fmt.setMaximumFractionDigits(999);তারপরে ব্যবহার করুনtotal2 = fmt.format(total)
অ্যান্ড্রেয়াস

এটি অভ্যন্তরীণভাবে কল করে Double.toString()। এটি কীভাবে প্রশ্নের উত্তর দেয় তা নিশ্চিত নয়।
shmosel

23

Double.toString () ব্যবহার করে, সংখ্যাটি যদি খুব ছোট বা খুব বেশি হয় তবে আপনি এর মতো একটি বৈজ্ঞানিক স্বরলিপি পাবেন: 3.4875546345347673E-6। আউটপুট স্ট্রিং ফর্ম্যাটটির আরও নিয়ন্ত্রণ পাওয়ার বিভিন্ন উপায় রয়েছে।

double num = 0.000074635638;
// use Double.toString()
System.out.println(Double.toString(num));
// result: 7.4635638E-5

// use String.format
System.out.println(String.format ("%f", num));
// result: 0.000075
System.out.println(String.format ("%.9f", num));
// result: 0.000074636

// use DecimalFormat
DecimalFormat decimalFormat = new DecimalFormat("#,##0.000000");
String numberAsString = decimalFormat.format(num);
System.out.println(numberAsString);
// result: 0.000075

স্ট্রিং.ফর্ম্যাট () ব্যবহার করা সর্বোত্তম সুবিধাজনক উপায়।


14

এই কোডটি আমার জন্য সংকলন এবং কাজ করে। এটি আপনার চেষ্টা করা কলগুলি ব্যবহার করে একটি ডাবলকে স্ট্রিংয়ে রূপান্তর করে।

public class TestDouble {

    public static void main(String[] args) {
        double total = 44;
        String total2 = Double.toString(total);

        System.out.println("Double is " + total2);
    }
}

আমি আপনার নাম্বার ফর্ম্যাট এক্সেক্সশন দেখে হতবাক হয়েছি। স্ট্যাক ট্রেস তাকান। আমি অনুমান করছি যে আপনার কাছে এমন অন্যান্য কোড রয়েছে যা আপনি আপনার উদাহরণে প্রদর্শন করছেন না যা এই ব্যতিক্রমটিকে ছুঁড়ে ফেলার কারণ করছে।


আমি আপনার নাম্বার ফর্ম্যাট এক্সেক্সশন দেখে হতবাক হয়েছি। স্ট্যাক ট্রেস তাকান। আমি অনুমান করছি যে আপনার কাছে এমন অন্যান্য কোড রয়েছে যা আপনি আপনার উদাহরণে প্রদর্শন করছেন না যা এই ব্যতিক্রমটিকে ছুঁড়ে ফেলার কারণ করছে।
ডিটকিন

1
ওপির কোডটিও তাই করে। সমাধানের জন্য এখানে কোনও সমস্যা নেই।
ব্রায়ান রোচ

সম্ভব, আমি এটি অন টুচলিস্টনারে করার চেষ্টা করছি। আমি আরও কোড পোস্ট করি, মূলত যখন ব্যবহারকারী এডিটেক্সট বক্সটি স্পর্শ করে আমি তথ্যটি একটি সম্পাদনা সম্পাদনা বাক্স পূরণ করতে গণনা করতে চাই।
ব্র্যান্ডন উইলসন

6

ব্যতিক্রম সম্ভবত পার্সডুবল () কলগুলি থেকে আসে। সেই ফাংশনে প্রদত্ত মানগুলি সত্যই দ্বিগুণ প্রতিবিম্বিত হয় তা পরীক্ষা করে দেখুন।


3
double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

এটা কাজ করে। পুনরাবৃত্তি হতে পারে।


3

Kotlin

আপনি .toStringকোটলিনে যেকোন ডেটা টাইপের উপরে সরাসরি ব্যবহার করতে পারেন

val d : Double = 100.00
val string : String = d.toString()

1
double total = 44;
String total2= new Double(total).toString();

এই কোড কাজ করে


3
Double.toString()কল String.valueOf(double)যা কল Double.toString(double)। পাগল, আহ?
কর্সিকা 19

ওপির কোডটিও তাই করে। সমাধানের জন্য এখানে কোনও সমস্যা নেই।
ব্রায়ান রোচ

2
@ মুহাম্মাদ - সম্ভব ?? এটি যা করে
ব্রায়ান রোচ

2
@ মুহম্মদ ভাল, আপনি তার স্ট্রিংয়ের মান পেতে কেবল একটি অবজেক্ট তৈরি করছেন। যদি এটি কোনও ধরণের লুপে থাকে তবে আপনি প্রচুর অতিরিক্ত (অপ্রয়োজনীয়) ওভারহেডের অভিজ্ঞতা অর্জন করতে পারেন। আমি অকালীন অপ্টিমাইজেশনের কোনও বড় অনুরাগী নই, তবে আমি স্পষ্টত ঘাটতিগুলি এড়ানোর ভক্ত।
corsiKa

1
@ ব্রায়ান ওকি আমি বুঝতে পেরেছি :) আপনাকে ধন্যবাদ আপনি ঠিক বলেছেন, তাই গ্লোকোডারও রয়েছে
অলিয়ানরেন

1
double priceG = Double.parseDouble(priceGal.getText().toString());
double valG = Double.parseDouble(volGal.toString());

এর মধ্যে একটি ব্যতিক্রম ছুঁড়ে মারছে। কী আছে volGalএবং priceGalএটি দেখার জন্য আপনাকে কিছু লগিং / মুদ্রণ যুক্ত করতে হবে - এটি আপনার মনে হয় না।


আমি মোটটিকে 44 এর মতো শক্ত সংখ্যায় পরিবর্তন করেছি এবং এটি এখনও আমাকে একটি ত্রুটি দিয়েছে।
ব্র্যান্ডন উইলসন

কি "মোট"? আপনার মূল কোড স্নিপপিট ব্যতিক্রমটি ছুঁড়ে ফেলতে পারেনি। আমি উপরে যে দুটি কল দেখাব সেগুলি করতে পারে। আপনার Stringকোনও একটি এর বৈধ উপস্থাপনা নয় doubleযার কারণে আপনি সেই ব্যতিক্রমটি পাচ্ছেন।
ব্রায়ান রোচ

স্পষ্ট করা; Double.toString(total); একটি ব্যতিক্রম নিক্ষেপ করতে পারবেন না। কখনো। । আপনি এটি পরিবর্তন করতে পারেন new Double(total).toString();যা করতেও পারে না এবং আপনি যদি এখানে উত্তরটি দেখে থাকেন যে নীচে ভোট দেওয়া হয়েছে এটি এটি আপনি কখনও করতে চান এমন কিছু নয়।
ব্রায়ান রোচ

ঠিক আছে অসুস্থ যে পরিবর্তন করা। আমি সেই লিটল বিট কোডটি অন্টচল্টিস্টারের বাইরে সরিয়ে নিয়েছি এবং এটি দুর্দান্ত কাজ করেছে। তবে এটি অন্টচল্টিস্টারে থাকলে ত্রুটিটি ছুঁড়ে দেয়। আমি এটি একটি টুচলিস্টেনারে করার চেষ্টা করছি। আমি আরও কোড পোস্ট করি, মূলত যখন ব্যবহারকারী এডিটেক্সট বক্সটি স্পর্শ করে আমি তথ্যটি একটি সম্পাদনা সম্পাদনা বাক্স পূরণ করতে গণনা করতে চাই।
ব্র্যান্ডন উইলসন

1

double.toString()কাজ করা উচিত. ভেরিয়েবল টাইপ Doubleনয়, ভেরিয়েবল নিজেই double


আপনার বিবেচনা করা উচিত যে কখনও কখনও এটি ই বৈজ্ঞানিক স্বরলিপি সহ -2.23561E5
আগস্টাস

0

কেবল নিম্নলিখিতটি ব্যবহার করুন:

doublevalue+""; 

এটি যে কোনও ডেটা ধরণের জন্য কাজ করবে।

উদাহরণ:

Double dd=10.09;
String ss=dd+"";

7
একটি খালি স্ট্রিংয়ে যুক্ত করে স্ট্রিংফাই করা খুব খারাপ অভ্যাস। পরিবর্তে নিবেদিত
জেডিকে ফান

2
@ মাইকেল.পি কেন খারাপ?
gab06

আমি জাভা প্রোগ্রামার এলওএল হিসাবে আমার পুরো সময়ের মতো এটি করে আসছি।
gab06

1
খেলায় কিছু সংকলন-সময় অপ্টিমাইজেশন না থাকলে এটি একটি অতিরিক্ত নির্মাতা এবং সংযোজন পদ্ধতি কল করবে।
dsmith

1
পরিবর্তে সর্বদা String.valueOf (dd) ব্যবহার করুন। এটি যে কোনও ডেটা ধরণের জন্যও কাজ করবে।
ব্লেডকডার

0

StringBuilderশ্রেণি যেমন ব্যবহার করুন :

StringBuilder meme = new StringBuilder(" ");

// Convert and append your double variable
meme.append(String.valueOf(doubleVariable));

// Convert string builder to string
jTextField9.setText(meme.toString());

আপনি পছন্দসই আউটপুট পাবেন।


0

কিভাবে আপনি যখন করবেন

totalCost.setText(tot);

তুমি শুধু কর

totalCost.setText( "" + total );

যেখানে "" + <পরিবর্তনশীল> এটিকে স্বয়ংক্রিয়ভাবে স্ট্রিংয়ে রূপান্তর করবে


0

সম্পূর্ণ তথ্য

আপনি ভাসা, ডাবল, ইনট, বুলিয়ান ইত্যাদির জন্য স্ট্রিং.ভ্যালুওফ () ব্যবহার করতে পারেন

double d = 0;
float f = 0;
int i = 0;
short i1 = 0;
char c = 0;
boolean bool = false;
char[] chars = {};
Object obj = new Object();


String.valueOf(d);
String.valueOf(i);
String.valueOf(i1);
String.valueOf(f);
String.valueOf(c);
String.valueOf(chars);
String.valueOf(bool);
String.valueOf(obj);

0

স্ট্রিংয়ে ডাবল রূপান্তর করার জন্য তিনটি উপায় রয়েছে ।

  1. Double.toString (ঘ)
  2. String.valueOf (ঘ)
  3. "" + D

    পাবলিক ক্লাস DoubleToString {

    public static void main(String[] args) {
        double d = 122;
        System.out.println(Double.toString(d));
        System.out.println(String.valueOf(d));
        System.out.println(""+d);
    
    }

    }

স্ট্রিং ডাবল

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