2012-02-25 15 views
1

GeoPointを2 Decimalから構築しようとしています。私が直面している問題は、GeoPointのコンストラクタがE6形式の2つのintを必要とすることです。だから、リテラルとそれは簡単です: 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を行わずにあなたがしているference。カバーの下でも同じことが起こります。

ただし、倍精度化の精度が低下する可能性があることに注意してください。 decimal精度のための取引範囲(マグニチュード)。 doubleおよびfloat範囲(大きさ)の取引精度。また、doubleからdecimalへの変換は、変換される値がdecimalとして表されない場合、OverflowExceptionをスローします。

次の値のいずれかがOverflowExceptionスローされます。Decimal.MaxValue 未満Decimal.MinValue

  • 値より大きい

    • Double.NaN
    • Double.PositiveInfinity
    • Double.NegativeInfinity
    • 値を
  • +0

    追加情報ありがとうございますNicholas –

    関連する問題