2011-10-30 2 views
0

위도와 경도를 비교하기 위해 거친 값보다 크고 작지 않은 값을 얻으려고합니다. 나는 위도, 경도 및 숫자의 자릿수를 전달할 수 있어야합니다. 내가이 예를 들어 값이있는 경우 : 하나의 일치로 중간을 선택십진수가있는 패드 제로

18.363285 -67.18024 
18.448619 -67.13422  <----- Only second value matched 
18.498987 -67.13699  <----- Both values matched 
18.465162 -67.141486 
18.182151 -66.9588 

을, 나는의 숫자로, 위도로 18.49 (1234567)에 경도로 -67.13 (1234567) 및 2를 전달하려는 반올림 할 소수점 이하 자릿수. 주어진 위도와 경도를 반올림하여 장소로 반올림하고 0.02을 추가하여 상한값을 얻으려고합니다.

마지막 부분에 붙어 있습니다. 4로 입력하고 0.00004를 반환하는 수학 함수는 생각할 수 없습니다.

내가 이것을 복잡하게하지 않으면 허용 오차 내에서 값 집합과 일치시키는 간단한 방법이 있습니다.

편집 :

In Out 
1 0.01 
2 0.001 
3 0.0001 
4 0.00001 
5 0.000001 
6 0.0000001 
+3

약'4.0/100000.0'은? – Yahia

+0

예, 5/100000은 0.000005를 반환하지 않습니다. Convert.ToString (Enumerable.Repeat ("0", numDigits))'을 사용하는 것이 유감입니다. 그러나 그것은 잘못되었습니다. – Echilon

+0

@Echilon '5/100000d'. 복식으로 작업 할 수 있도록해야합니다. 그렇지 않으면 잘린 정수 계산으로 끝날 것입니다. 전체 값 중 하나를 "d"를 추가하여 double로 지정할 수 있습니다. –

답변

1
private double Calc(int places) 
    { 
     return 1/(Math.Pow(10, places + 1)); 
    } 
+0

감사합니다. – Echilon

4

사용 Math.Abs ​​:

if (Math.Abs(value1 - value2) <= 0.01) { 
    // close enough 
    // etc... 
} 

이 Math.Pow에서 분수 계산을 (10 예를 들어, 나는이 숫자에 전달하고 이들 값을 다시받을 필요 , -numberOfDigitsInTheFraction);