如何将Decimal转换为int E6
本文关键字:int E6 转换 Decimal | 更新日期: 2023-09-27 18:25:40
我正试图从2个Decimal
构造一个GeoPoint
。我面临的问题是GeoPoint构造函数需要E6格式的2 int。因此,使用文字很容易:
GeoPoint point = new GeoPoint((int)61.54367E6, (int)-149.768E6);
但是,如果我的输入存储为Decimal
,我该怎么办?
Decimal Latitude = 61.54367;
Decimal Longitude = -149.768;
GeoPoint point = new GeoPoint((int)(Latitude * 1E6), (int)(Longitude * 1E6));
您所说的"E6"格式是科学记数法。这就是浮点文字的书写方式。请参阅§9.4.4.2(Integer Literals)和§9.4.4.3(真实文字)C#标准:ISO/IEC 23270(信息技术;编程语言;C#)。ISO/IEC 23270及其兄弟ISO/IEC 23271描述CLR,可在上以PDF文件的形式从ISO免费获得
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) ) ;
你做什么没有区别。同样的事情也会发生在幕后。
不过,您应该注意,在转换为double时可能会丢失精度。decimal
以范围(量级)换取精度;CCD_ 8和CCD_。此外,如果正在转换的值不能表示为decimal
,则从double
到decimal
的转换将抛出OverflowException
。
以下任何值都将抛出OverflowException
:
Double.NaN
Double.PositiveInfinity
Double.NegativeInfinity
- 值小于
Decimal.MinValue
- 大于
Decimal.MaxValue
的值