Как привести десятичное число к int E6 - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь построить GeoPoint из 2 Decimal.Проблема, с которой я сталкиваюсь, заключается в том, что конструктор GeoPoint ожидает 2 дюйма в формате E6.Так что с литералами это легко:

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

Но если мои входные данные хранятся как Decimal, что мне делать?

Decimal Latitude = 61.54367;
Decimal Longitude = -149.768;

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012
GeoPoint point = new GeoPoint((int)(Latitude * 1E6), (int)(Longitude * 1E6));
1 голос
/ 25 февраля 2012

Формат "E6", о котором вы говорите, - научная запись .Так пишутся литералы с плавающей точкой.См. §9.4.4.2 (Целочисленные литералы) и §9.4.4.3 (Действительные литералы) стандарта C #: ISO / IEC 23270 (Информационные технологии - Языки программирования - C #).ИСО / МЭК 23270 и его брат, ИСО / МЭК 23271, описывающий CLR, свободно доступны в виде файлов PDF от ИСО по адресу

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

Но все, что вам нужно сделать, это привестиВаши значения decimal равны double

new GeoPoint( (double) latitude , (double) longitude ) ;

Или, альтернативно, используйте статический метод Decimal.ToDouble():

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

Не имеет значения, что вы делаете.То же самое происходит под одеялом.

Однако вы должны заметить, что при преобразовании в удвоение вы можете потерять точность.decimal диапазон сделок (величина) для точности;double и float точность торговли для диапазона (величины).Кроме того, преобразование из double в decimal выдает OverflowException, если конвертируемое значение не может быть представлено как decimal.

. Любое из следующих значений выдает OverflowException:

  • Double.NaN
  • Double.PositiveInfinity
  • Double.NegativeInfinity
  • значения меньше Decimal.MinValue
  • значения большечем Decimal.MaxValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...