이것은이 주제에 대한 두 번째 게시물입니다. 나는이 주제에 관한 수십 개의 게시물을 발견했으며 작동하는 하나의 솔루션이 아닙니다. 위치 수신기는 3.734567E7과 같은 위도를 제공합니다. 저의 목표는 위도의 정확도를 소수점 네 자리까지 줄이는 것입니다. 잘라내거나 반올림해도 상관 없습니다. 이 처리의 3.734567E7 3.734567E7위도를 소수점 이하 4 자리로 줄이는 방법
아무도 어떤 수에 영향을주지 않습니다 다음 코드는 ...
Double d = Double.parseDouble("3.734567E7");
NumberFormat fmtr = new DecimalFormat("###.####");
String f = fmtr.format(d);
Log.w(getClass().getName(), "result using DecimalFormat = " + f);
d = (double) Math.round(d * 10000.0)/10000.0;
Log.w(getClass().getName(), "result using math round = " + d);
f = d.toString();
Log.w(getClass().getName(), "result string using math round = " + f);
세 가지 라인을 생산하고 있습니다.
내 윈도우 폰 응용 프로그램에서 C#으로이 일을했을 때 내가했던 다음 ...
myExecution.latitude = Math.Round (newLatitude, 4); 그것은 내 시간의 1 분 미만 걸렸다. 나는 자바에서 같은 일을하는 법을 알아 내려고 노력하는 데 수 주일이 걸렸다. Java math.round, oddley만큼, 소수점 이하 자릿수를 지정할 수있는 방법이 없습니다. 이해할 수있는만큼 완전히 쓸모 없게 만듭니다.
과학 표기법은 값을 표시하는 방법 일 뿐이며 금액이 내부적으로 저장되는 방법과 관련이 없음을 알고 있습니다. 이것은이 문제를 더욱 복잡하게 만든다.
위의 코드를 수정하여 소수점 이하 4 자리로 만들 수 있습니까?
(하지만 당신은 코드의 1 라인을 변경할 수 없습니다. 그것은 과학적 표기법으로 지정해야합니다. 당신이 그것을 훌륭하게 작동하는 10 진법을 지정합니다. 감사, 게리을
몇 가지 답변을 몇 가지 방법을 표시합니다. –
'onLocationChanged()'코드를 게시하여 왜 그렇게 큰 숫자를 얻었는지 알 수 있습니다 ...'Location # getLatitude()'는 -180과 180 사이의 _usable_ double을 반환해야합니다. – Sam