2012-02-25 3 views
1

GeoPoint을 2 Decimal에서 구성하려고합니다. 내가 직면 한 문제는 GeoPoint 생성자가 E6 형식의 int 2 개를 필요로한다는 것입니다. 그래서 리터럴은 간단합니다 : Decimal을 int로 캐스팅하는 방법

GeoPoint point = new GeoPoint((int)61.54367E6, (int)-149.768E6); 

하지만 내 입력이 Decimal로 저장하는 경우 어떻게해야합니까

?

Decimal Latitude = 61.54367; 
Decimal Longitude = -149.768; 

답변

4
GeoPoint point = new GeoPoint((int)(Latitude * 1E6), (int)(Longitude * 1E6)); 
+0

완벽 고맙습니다. –

+0

당신은 환영합니다 : –

1

당신에 대해 얘기하고 "E6"형식은 과학적 표기법입니다. 그것은 부동 소수점 리터럴이 작성되는 방법입니다. C# 표준의 § 9.4.4.2 (정수 리터럴) 및 § 9.4.4.3 (실제 리터럴) : ISO/IEC 23270 (정보 기술 — 프로그래밍 언어 — C#)을 참조하십시오. ISO/IEC 23270과 그 형제, ISO/IEC 23271의 CLR을 설명은

http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html

에서 ISO에서 PDF 파일로 자유롭게 사용할 수 있습니다하지만 당신이해야 할 double

decimal 값을 캐스팅
new GeoPoint((double) latitude , (double) longitude) ; 

또는 대안 정적 Decimal.ToDouble() 방법을 사용

new GeoPoint(Decimal.ToDouble(latitude) , Decimal.ToDouble(longitude)) ; 

더 DIF를하지 J을 너는 네가하는 일이다. 커버 아래에서도 똑같은 일이 일어납니다.

그러나 두 배로 변환 할 때 정확도가 떨어질 수 있습니다. decimal 정밀도를위한 거래 범위 (크기); doublefloat 범위 (크기)에 대한 거래 정밀도. 또한 double에서 decimal으로의 변환은 변환 될 값이 decimal으로 표시 될 수없는 경우 OverflowException이됩니다. Decimal.MaxValue 보다 큰 Decimal.MinValue

  • 값보다 적은

    • Double.NaN
    • Double.PositiveInfinity
    • Double.NegativeInfinity
    • 값 :

      에는 다음과 같은 값

      OverflowException가 발생합니다
  • +0

    추가 정보를 가져 주셔서 감사합니다 Nicholas –

    관련 문제