C#中有一些示例轉換代碼是否從十進制度轉爲度,分,秒,十?將十進制度轉換爲十分之幾秒。
6
A
回答
8
我認爲這應該做到這一點。
double decimal_degrees;
// set decimal_degrees value here
double minutes = (decimal_degrees - Math.Floor(decimal_degrees)) * 60.0;
double seconds = (minutes - Math.Floor(minutes)) * 60.0;
double tenths = (seconds - Math.Floor(seconds)) * 10.0;
// get rid of fractional part
minutes = Math.Floor(minutes);
seconds = Math.Floor(seconds);
tenths = Math.Floor(tenths);
27
這是我前一堂課的課。
public class GeoAngle
{
public bool IsNegative { get; set; }
public int Degrees { get; set; }
public int Minutes { get; set; }
public int Seconds { get; set; }
public int Milliseconds { get; set; }
public static GeoAngle FromDouble(double angleInDegrees)
{
//ensure the value will fall within the primary range [-180.0..+180.0]
while (angleInDegrees < -180.0)
angleInDegrees += 360.0;
while (angleInDegrees > 180.0)
angleInDegrees -= 360.0;
var result = new GeoAngle();
//switch the value to positive
result.IsNegative = angleInDegrees < 0;
angleInDegrees = Math.Abs(angleInDegrees);
//gets the degree
result.Degrees = (int)Math.Floor(angleInDegrees);
var delta = angleInDegrees - result.Degrees;
//gets minutes and seconds
var seconds = (int)Math.Floor(3600.0 * delta);
result.Seconds = seconds % 60;
result.Minutes = (int)Math.Floor(seconds/60.0);
delta = delta * 3600.0 - seconds;
//gets fractions
result.Milliseconds = (int)(1000.0 * delta);
return result;
}
public override string ToString()
{
var degrees = this.IsNegative
? -this.Degrees
: this.Degrees;
return string.Format(
"{0}° {1:00}' {2:00}\"",
degrees,
this.Minutes,
this.Seconds);
}
public string ToString(string format)
{
switch (format)
{
case "NS":
return string.Format(
"{0}° {1:00}' {2:00}\".{3:000} {4}",
this.Degrees,
this.Minutes,
this.Seconds,
this.Milliseconds,
this.IsNegative ? 'S' : 'N');
case "WE":
return string.Format(
"{0}° {1:00}' {2:00}\".{3:000} {4}",
this.Degrees,
this.Minutes,
this.Seconds,
this.Milliseconds,
this.IsNegative ? 'W' : 'E');
default:
throw new NotImplementedException();
}
}
}
5
0
你可以簡單地使用這2個功能:
public Tuple<int,int,int> DecimalToDegrees(decimal decimalValue)
{
return Tuple.Create(Convert.ToInt32(decimal.Truncate(decimalValue)),Convert.ToInt32((decimal.Truncate(Math.Abs(decimalValue)*60))%60),Convert.ToInt32((Math.Abs(decimalValue)*3600)%60));
}
和:
public decimal DecimalToDegrees(int deg , int min , int sec)
{ //~2.3825224324453 Meters error due to accuracy
return deg+(min/60m)+(sec/3600m);
}
相關問題
- 1. 轉換度/分/秒到十進制度
- 2. 如何將GPS度數,分鐘,秒轉換爲度,十進制分/秒?
- 3. 將十進制轉換爲十六進制和十六進制
- 4. 如何在度,分,秒之間轉換十進制座標
- 5. 將十進制座標轉換成度,分,秒,方向
- 6. 由c轉換十進制座標爲度,分和秒#
- 7. mysql如何十進制值轉換爲度,分,秒
- 8. DATEDIFF將分鐘轉換爲十進制
- 9. 將十進制數轉換爲分數
- 10. 將百分比轉換爲十進制
- 11. MySQL轉換度,分,秒到度十進制
- 12. 將十進制轉換爲十六進制/二進制
- 13. 將十六進制轉換爲二進制到十六進制?
- 14. 將八進制數轉換爲十進制和十六進制
- 15. 將十六進制轉換爲二進制,然後轉換爲十進制
- 16. 將十進制轉換爲小時:分鐘:秒
- 17. 使用VBA將十進制數轉換爲分鐘和秒
- 18. 將十進制表示時間轉換爲小時,分鐘,秒
- 19. 將十進制小時轉換爲小時分秒
- 20. 在Java中將十進制度數或度分秒轉換爲米
- 21. 將二進制轉換爲十進制
- 22. 將十進制轉換爲二進制
- 23. 使用限制將十進制轉換爲十六進制
- 24. 十六進制轉換爲十進制電壓轉換
- 25. 十進制轉換爲十六進制的轉換(Java)的
- 26. 如何將十六進制NSData轉換爲十進制數組?
- 27. 將2位十進制轉換爲十六進制
- 28. 在Visual C++中將十進制值轉換爲十六進制
- 29. 將十進制轉換爲十六進制值
- 30. 在Python中將十六進制值轉換爲十進制
到目前爲止客場,這是最好的答案。 –
這很好,但我經常看到秒作爲一個浮點值,這將窒息在 – Dan