我有从double到decimal的转换问题:
public class CartesianCoordinates
{
public int LatitudeHours { get; set;}
public int LatitudeMinutes { get; set; }
public int LatitudeSeconds { get; set; }
public GeoDirectionLongtitude LongitudeDirection { get; set; }
public int LongitudeHours { get; set; }
public int LongitudeMinutes { get; set; }
public int LongitudeSeconds { get; set; }
public GeoDirectionLatitude LatitudeDirection { get; set; }
}
public class DecimalCoordinates
{
public decimal Latitude { get; set; }
public decimal Longitude { get; set; }
}
CartesianCoordinates CartesianCoordinates=new CartesianCoordinates(){LatitudeHours =12,LatitudeMinutes =34,LatitudeSeconds=56 }
converterDecimalCoordinates.Latitude = CartesianCoordinates.LatitudeHours + (CartesianCoordinates.LatitudeMinutes + (CartesianCoordinates.LatitudeSeconds / 60)) / 60;
Run Code Online (Sandbox Code Playgroud)
我为什么得到12?我想要12,55
你的所有计算都是整数,并且是四舍五入的(更准确地说,是截断的).尝试用60m强制小数计算替换60的文字值,或60.0强制进行双重计算(在这种情况下,您需要在结尾处转换为小数).
Int32 x = 10;
Decimal y = x / 4; // Performs an integer devision - result is 2.0
Decimal z = x / 4M; // Performs a decimal devision - result is 2.25
Run Code Online (Sandbox Code Playgroud)
如果两个操作数都是整数,则得到整数分割.通过将后缀添加M到数字,您可以明确声明该数字应解释为十进制数,因此您将获得十进制数.
| 归档时间: |
|
| 查看次数: |
3403 次 |
| 最近记录: |