2009-12-14 4 views
0

나는 이것을 반환합니다, 그것은 당신이 $, "32.95"등등을 percieve하는 것과 비슷합니다. 저는 int 인 센트로 계산하지만, 문제는 후자의 절반이 10s를 잘라냅니다. 숫자가 그보다 작 으면 센트 부분. 예를 들어 "32.08"이 있으면 "32.8"으로 반환됩니다. 어떤 아이디어? 나는 내가 필요로하는 것을 안다. 그러나 나는 기울어진다. 그것을 쓰는 방법을 생각한다.Int 문자열 형식 문제

public String toString() 
{ 
    return (cents/100)+ "." + (cents % 100); 
} 

답변

0

BigDecimal 클래스를 사용하십시오.

6

당신은 http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html

에 DecimalFormat는 진수를 포맷하는 NumberFormat의 구상 서브 사용할 수 있습니다. Western, Arabic 및 Indic 숫자에 대한 지원을 포함하여 모든 지역에서 숫자를 구문 분석하고 형식을 지정할 수 있도록 설계된 다양한 기능이 있습니다. 또한 정수 (123), 고정 소수점 수 (123.4), 과학 표기법 (1.23E4), 백분율 (12 %) 및 통화 금액 ($ 123)을 비롯한 여러 가지 종류의 숫자를 지원합니다. 이들 모두는 현지화 될 수 있습니다.

String pattern = "$###,###.###"; 
double value = 12345.67; 
DecimalFormat myFormatter = new DecimalFormat(pattern); 
String output = myFormatter.format(value); 
System.out.println(value + " " + pattern + " " + output); 
// => 12345.67 $###,###.### $12,345.67 
+2

그건 두 번입니다! – irreputable

0

당신은 항상 센트 % (100)가 10보다 작은 경우 확인하고 있는지, 또 다른 0 그래도 아마 더 우아한 해결책있어 추가 할 수 있습니다.

0

따라서 32.08 % 1008이 아니고 08입니다. 당신은 물론 당신은 특정 NumberFormat, DecimalFormatMessageFormat에, java.text를 사용하여 생각 할 수 있습니다, 그러나 10

보다 적은 값에 대한 "0"에 추가 할 수 있습니다. java.util.Formatter 및 "printf"은 기계 가독 텍스트를 작성하려는 경우에 더 적합 할 수 있습니다.

0
NumberFormat nf=NumberFormat.getInstance(); // Get Instance of NumberFormat 
nf.setMinimumIntegerDigits(5); // The minimum Digits required is 5 

return (cents/100)+ "." + nf.format(cents % 100); 

자바를 수행 한 이후로해야합니다.

3

빠른 해킹 :

return String.format("%d.%02d", cents/100, cents%100); 
+0

@Anon, 삭제 된 답변에 부동 숫자를 사용하지 말라고하셨습니다. 이중 정밀도를 사용함에 따라 당신은 무엇을 의미합니까? –

+0

'double'은 부동 소수점 숫자 유형입니다. –

+0

돈으로 사용하기에 좋지 않습니까? 그래서 'MYYN' 대답은 이중 답을 사용하기 때문에 나쁜 대답이기도합니다. –

0
(""+(100+cents%100)).substring(1) // LOL 

(cents/100)+ "." + (cents /10 %10) + (cents % 10); // <<== OK 
0

추상화이야? Java는 객체 지향 언어입니다. 모든 구현 세부 사항을 Money 클래스에 캡슐화하고 클라이언트에서 숨기는 것이 더 좋지 않겠습니까?