double을 문자열로 변환


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;
  }         
});

onTouchListener 에서이 작업을 수행하려고합니다. 기본적으로 사용자가 편집 텍스트 상자를 터치하면 더 많은 코드를 게시하고 정보를 편집 텍스트 상자 채우기를 계산하기를 원합니다.


4
나에게 문제가없는 것 같습니다. 어떤 문제가 발생 했습니까?
MByD

2
실제 코드가 실행 중입니까? 그 라인은 완벽하게 작동합니다.
mcabral

1
Double.toString (double)조차도 NumberFormatException을 던질 수 없습니다-예외가 다른 곳에서 발생하지 않습니까?
Random832

1
다른 것이 있어야합니다. 이것은 잘 작동합니다. ideone.com/btGrv
Kevin

1
스택 트레이스 및 전체 코드 표시
Bozho

답변:


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

이것은 double을 String으로 변환합니다


22
총 1234567890123456 다음 문자열 당신이 원하는 것을 매우 자주하지 않은 "1.234567890123456E15"이됩니다 = 경우 마음에 다음이
user1735824

6
하나 이상의 솔루션?
Prashanth Debbadwar

6
@PrashanthDebbadwar 예 : NumberFormat fmt = NumberFormat.getInstance(); fmt.setGroupingUsed(false); fmt.setMaximumIntegerDigits(999); fmt.setMaximumFractionDigits(999);사용total2 = fmt.format(total)
Andreas

내부적으로 호출합니다 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

String.format ()을 사용하는 것이 가장 편리한 방법입니다.


14

이 코드는 컴파일되어 작동합니다. 시도한 호출을 사용하여 double을 문자열로 변환합니다.

public class TestDouble {

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

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

NumberFormatException을보고 의아해합니다. 스택 추적을보십시오. 예제에 표시되지 않은 다른 예외가 발생하여 예외가 발생하는 것으로 생각합니다.


NumberFormatException을보고 의아해합니다. 스택 추적을보십시오. 예제에 표시되지 않은 다른 예외가 발생하여 예외가 발생하는 것으로 생각합니다.
ditkin

1
OP의 코드도 마찬가지입니다. 여기서 해결해야 할 문제는 없습니다.
Brian Roach

가능하면 onTouchListener 에서이 작업을 수행하려고합니다. 기본적으로 사용자가 편집 텍스트 상자를 터치하면 더 많은 코드를 게시하여 정보가 편집 텍스트 상자를 채우도록 계산하려고합니다.
Brandon Wilson

6

parseDouble () 호출에서 예외가 발생했을 수 있습니다. 해당 함수에 주어진 값이 실제로 이중을 반영하는지 확인하십시오.


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

코 틀린

.toStringkotlin의 모든 데이터 유형에 직접 사용할 수 있습니다.

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). 미쳤어?
corsiKa

OP의 코드도 마찬가지입니다. 여기서 해결해야 할 문제는 없습니다.
Brian Roach

2
@ 무함마드-가능 ?? 그것이하는 일
Brian Roach

2
@ Muhammed는 String 값을 얻기 위해 객체를 만들고 있습니다. 이것이 어떤 종류의 루프에 있다면 많은 (필요하지 않은) 추가 오버 헤드가 발생할 수 있습니다. 나는 조기 최적화의 열렬한 팬은 아니지만 명백한 결함을 피하는 팬입니다.
corsiKa

1
@Brian okey 이해합니다 :) 감사합니다. 당신은 너무 glowcoder는 않습니다, 맞다
olyanren

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

그중 하나가 예외를 던지고 있습니다. 당신은에서 무엇을보고 인쇄 / 일부 로깅을 추가해야 volGal하고 priceGal- 당신이 생각하지 않습니다.


총계를 44와 같이 어려운 숫자로 변경했는데 여전히 오류가 발생했습니다.
Brandon Wilson

무슨 "전체"? 원래 코드 스 니핏이 해당 예외를 처리하지 못했습니다. 위에서 보여준 두 통화는 가능합니다. 의 중 하나가 String유효한 표현이 아니기 double때문에 예외가 발생합니다.
Brian Roach

확실하게; Double.toString(total); 예외를 던질 수 없습니다. 이제까지. . 당신 new Double(total).toString();도 할 수없는 것으로 변경했으며 여기에 투표 된 답변이 표시되면 당신이하고 싶은 것이 아닙니다.
Brian Roach

알았어. 저 작은 코드를 온 터치 리스너에서 옮겼으며 정상적으로 작동했습니다. 그러나 ontouchlistener에 있으면 오류가 발생합니다. onTouchListener 에서이 작업을 수행하려고합니다. 기본적으로 사용자가 편집 텍스트 상자를 터치하면 더 많은 코드를 게시하여 정보가 편집 텍스트 상자를 채우도록 계산하려고합니다.
Brandon Wilson

1

double.toString()작동해야합니다. 변수 유형 Double이 아니라 변수 자체 double입니다.


때로는 -2.23561E5
Augustas

0

다음을 사용하십시오.

doublevalue+""; 

이것은 모든 데이터 유형에 적용됩니다.

예:

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

7
빈 문자열에 추가하여 문자열 화하는 것은 매우 나쁜 습관입니다. 대신 전용 JDK 기능을 사용하십시오
StackHola

2
@ Michael.P 왜 나쁜가요?
gab06

나는 자바 프로그래머 롤처럼 내 시간처럼 이것을하고있다.
gab06

1
재생시 컴파일 타임 최적화가 없으면 추가 생성자와 append 메소드를 호출합니다.
dsmith

1
항상 대신 String.valueOf (dd)를 사용하십시오. 이것은 모든 데이터 유형에도 적용됩니다.
BladeCoder

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 );

""+ <variable>이 자동으로 문자열로 변환하는 위치


0

완전한 정보

float, double, int, boolean 등에 String.valueOf ()를 사용할 수 있습니다.

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

double을 String 으로 변환하는 세 가지 방법이 있습니다 .

  1. Double.toString (d)
  2. String.valueOf (d)
  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.