public string ToString(AngleUnits units, string precision, DegreesFormat degFormat) { switch (units) { case AngleUnits.Radians: return this.AsRad.ToString(precision); case AngleUnits.Grads: return this.AsGrad.ToString(precision); case AngleUnits.Degrees: return ToDegreesString(degFormat, precision); } return this.Value.ToString(precision); }
public string ToDegreesString(DegreesFormat degFormat, string precision) { if (double.IsNaN(AsRad)) return "NaN°"; if (degFormat == DegreesFormat.Deg) { return this.AsDeg.ToString(precision) + "°"; } // 0.000 -> 00.000 if (precision == "0") precision = "00"; else precision = precision.Replace("0.", "00."); double deg = 0.0; double min = 0.0; double sec = 0.0; // 52.9233222 double angle = this.AsDeg; deg = Math.Floor(angle); angle = (angle - deg) * 60.0; min = angle; if (degFormat == DegreesFormat.DegMin) { // 52°59.9999 może wyświetlić jako 52°60.0 zamiast 53°00.0 dlatego if (min.ToString(precision) == 60.ToString(precision)) { min = 0; deg = deg + 1; } return deg.ToString("0") + "°" + min.ToString(precision) + "'"; } min = Math.Floor(angle); angle = (angle - min) * 60.0; sec = angle; // dla kąta 52°09'59.999" może wyświetlić 52°09'60" zamiast 52°10'00" dlatego if (sec.ToString(precision) == 60.ToString(precision)) { sec = 0; min = min + 1.0; } if (min.ToString("00") == 60.ToString("00")) { min = 0.0; deg = deg + 1; } return deg.ToString("0") + "°" + min.ToString("00") + "'" + sec.ToString(precision) + @""""; }
public void LoadFromDefaults() { this._degreesFormat = DegreesCoordinate.DefaultDegreesFormat; this._degreesPrecision = DegreesCoordinate.DefaultPrecision; this._XYPrecision = XYCoordinate.DefaultPrecision; this._coordinateSystem = CoordinateSystem.Default; }