2013-06-04 3 views
0
public static String convertCentimeterToHeight(double d) { 
    double feetPart = 0; 
    double inchesPart = 0; 
    if (String.valueOf(d) != null && String.valueOf(d).trim().length() != 0) { 
     feetPart = (int) Math.floor((d/2.54)/12); 
     inchesPart = (int) Math.ceil((d/2.54) - (feetPart * 12)); 
    } 
    return (String.valueOf(feetPart)) + "' " + String.valueOf(inchesPart) + "''"; 
} 

소수점을 제거하려고하는데, 여전히 과 같은 것을 얻고 있습니다. String.value() on a variable을 수행하면 소수점이 제거되고 정확한 숫자를 알려줍니다.숫자에서 소수 자릿수 제거하기

+3

ints. 왜 int를 저장하기 위해 double을 사용합니까? – njzk2

+1

"캐스팅"을 사용하지 않는 이유는 무엇입니까? – Juvanis

+0

가 동의합니다. 대신 Integer.parseInt를 사용하지 않으시겠습니까? –

답변

5

그냥 int들로 선언, feetPartinchesPart 변수 int의를 저장할로 :

int feetPart = 0; 
int inchesPart = 0; 

그럼 당신은 그들을 (후행 .0로 즉) double들로 표시되지 않도록합니다.

1

당신은뿐만 아니라 그것을 수정해야하는 int

return (String.valueOf((int)feetPart)) + "' " + 
String.valueOf((int)inchesPart) + "''"; 

에 이중 변수를 캐스팅 할 수 있습니다.

3

int으로 간단하게 전송할 수 있습니다.

(int) d; 
0

모든 대답이 사용자의 변수 유형을 대체합니다. 내 길은 계속됩니다. 이 코드 만 사용하면 마법을 찾을 수 있습니다.

double d = 1.0d; 
String s = String.format("%1$.0f", d); 
System.out.println(s); 
+0

http://docs.oracle.com/javase/7/docs/api/index.html에서 Java 형식을 배우는 방법을 참조 할 수 있습니다. – BrookLeet

+0

또한 String.format은 null 예외 또는 잘못된 예외를 자동으로 처리합니다. TYPE CONVERSION을 사용하면 혼자서 처리해야합니다. 그건 편리하지 않아. – BrookLeet

+0

너트를 깨기 위해 망치를 사용하고 있습니다. 이것은 단순한'(int)'cast만큼 비효율적 인 수백 번이다. – EJP

1

자세한 내용은 해당 정보를 참조하십시오.

// always true, it never returns null 
String.valueOf(d) != null 
// always true, a double is never an empty string. 
String.valueOf(d).trim().length() != 0; 

// same as 
int feetPart = (int) (d/2.54/12); 
int inchesPart = ((int) (d/2.54)) % 12; 

// same as 
return feetPart + "' " + inchesPart + "\"";