2011-10-29 1 views
0

나는 며칠 동안이 작업을 해왔습니다. 말도 안되는 이중 오류를 얻은 후에는 BigDecimal을 사용하는 것이 길이었습니다. 여기에 코드가 있습니다 : http://pastebin.com/rpbNJnHHBigDecimal 클래스를 올바르게 사용하고 있습니까? 정말 신참 실수를 저 지르지 않도록 코드를 다시 검사 할 사람을 사용할 수 있습니다.

저는 BigDecimal을 사용 해본 적이 한번도 없었습니다. 그래서 여기 누군가가 한 번 들여다보고 실수를 저 지르지 않기를 바랬습니다. 나는 내가 겪었고 내가 확신 할 수있는만큼 많이 점검했다.

편집 : 죄송합니다. 이것은 막연합니다. 그래서, double primitive 타입을 사용하고 있었지만 for (double i = 0; i < 1; i + = .05)와 같은 일을하는 것은 i에 대해 부정확 한 값을줍니다 (.0499999999 또는. 249999999999). 그래서 BigDecimal로 바꿨습니다. 그러나 이전에는 BD를 사용한 적이 없었으므로 다른 사람이 내 코드를 살펴보고 올바르게 사용하고 있는지 확인할 수 있었으면합니다. 즉, 어딘가에서 정밀도를 잃지 않고 있습니다. 감사합니다

+4

특정 오류 메시지가 나타나거나 BigDecimal로 인한 것으로 의심되는 잘못된 결과가 표시되고 있습니까? 이 질문은 다소 모호합니다. BigDecimal로 인해 발생하는 문제에 대한 자세한 내용을 포함하는 데 도움이 될 수 있습니다. – kaveman

+1

질문을 구체적으로 작성할 수 있습니까? 다른 문맥없이 100 라인 프로그램을 확인해달라고 요청하는 것은별로 도움이되지 않습니다. 몇 가지 일을하고 질문을 주저하십시오. – Gray

+0

OP를보다 구체적으로 편집했습니다. 머리를 가져 주셔서 감사합니다. 애매했다. – mtheoryninja

답변

1

이 코드가 어떻게 컴파일되는지는 잘 모르겠습니다.

for (MyPoint point : prevU.keySet()) { 
     BigDecimal x = point.getX(); 
     BigDecimal t = point.getT(); 
} 

Graphics2D g2 = (Graphics2D) g; 
g2.setColor(Color.BLUE); 
g2.fillOval(x, t, 1, 1); 

x 및 t는 int 값이어야하고 범위 내에 있어야합니다.

아주 간단하게 컴파일하고 올바르게 실행하는 것으로 시작한 다음 천천히 추가하는 것이 좋습니다. 한 번에 너무 많이 변경하려고하면 압도적 인 혼란으로 끝날 것입니다.

double 또는 BigDecimal을 사용하는 대신 int 값을 사용합니다.이 값은 하루가 끝나는 시점에 필요하므로 화면의 가로 또는 세로가 20 억 픽셀을 초과하지 않는 한 길지 않아도됩니다. double 또는 BigDecimal

+0

흠, 어떤 이유로 나는 이전 버전을 세웠다. 어느 쪽이든, 내 코드는 잘 컴파일됩니다. 나는 자바 오류를 찾지 않을 것을 요구하고있다. 나는 BigDecimal을 경험 한 사람이 그것을 올바르게 사용하고 있는지를 묻고있다 (즉, 나는 정밀도를 잃지 않고있다). 내가 할 수 있으면 이걸 닫을 수도있어. – mtheoryninja