2013-07-25 1 views
1

나는 정말 안드로이드 프로그래밍에 익숙해 져서 어떤 도움을 주셔서 감사하겠습니다. 페이지를 훑어보고 올바른 대답을 찾지 못하는 것 같습니다. 이것이 비슷한 질문이라면 나는 솔직히 사과한다. 내 문제는) (나는 보좌관 내 안드로이드 장치에 코드를 쓸 때BigDecimal 반올림하지 않음 반올림하지 않음

pitch_round.setScale(2,BigDecimal.ROUND_UP); 

가 잘 작동 아래 예제의 라운딩을 컴파일러 및 I 출력에 pitch_round.ToString를 사용하여 텍스트 뷰에 둥근 BigDecimal를 할 수 있었다이다 , 내가 이클립스에서 비슷한 코드를 사용했을 때 컴파일시 오류가 발생하지 않았지만, 텍스트 뷰에 대한 출력이 전혀 둥근 것처럼 보이지 않았다. 지금 실수로 더 많은 소수점 문자가있는 것처럼 보인다.

아래 코드는 작동하지 않는 코드입니다. 제가 지금 여기서하고 있지 않은 것이 있습니까? 모든 falues이 장치 에 보좌관에 사용 된 코드와 동일 수레 있습니다

pitch_round.setScale(2,BigDecimal.ROUND_UP); 

pitch_round = pitch_round.setScale(2,BigDecimal.ROUND_UP); 

BigDecimal

에 같은 사전

 pitch = mOrientation[1]*57.2957795f; 
     roll= mOrientation[2]*57.2957795f; 
     yaw= mOrientation[0]*57.2957795f; 
      // change to bigdecimal object 
      BigDecimal pitch_round = new BigDecimal(pitch-zero_pitch); 
      BigDecimal roll_round = new BigDecimal(roll-zero_roll); 
      BigDecimal yaw_round = new BigDecimal(yaw-zero_yaw); 


      pitch_round.setScale(2,BigDecimal.ROUND_UP); 
      roll_round.setScale(2,BigDecimal.ROUND_UP); 
      yaw_round.setScale(2,BigDecimal.ROUND_UP); 


      Log.i(SENSOR_SERVICE, pitch_round.toString()); 
      t_pitch.setTextColor(Color.CYAN); 
     t_roll.setTextColor(Color.CYAN); 
     t_yaw.setTextColor(Color.CYAN); 
     // log some output to test code 

     //Log.i(SENSOR_SERVICE, "Send Results"+ pitch); 

     t_pitch.setText(pitch_round.toString()); 
     t_roll.setText(roll_round.toString()); 
     t_yaw.setText(yaw_round.toString()); 

답변

4

변경 모두 감사 이 메소드의 호출이 불변 인 경우, 가 아니고,가 원래의 ob 수정되는 대상

1

setScale은 삭제할 새 BigDecimal을 반환합니다. 인 setScale API의 문서에서

pitch_round = pitch_round.setScale(2,BigDecimal.ROUND_UP); 

을 시도해보십시오

가의 BigDecimal 객체는 불변이기 때문에,이 방법 의 호출 원의 객체에 포함되지 않는 것으로 도시

가 수정되고,의 일반적인 규칙에 반하는 setX라는 메소드가 X 필드를 변경합니다. 대신 setScale은 적절한 크기의 객체를 반환합니다. 반환 된 객체 은 새로 할당되거나 할당되지 않을 수 있습니다.