2bf8478639
- 新增日月食中心带、偏食带、阴影足迹、等时线、食分线及升落边界计算,支持极区与混合食拓扑 - 新增日食单时刻阴影求解器、站心状态查询、批量采样和 ΔT 覆盖接口 - 重构恒星与行星月掩路径,补充有限盘面接触、站心修正、掩带宽度、极区投影及升落边界 - 扩展 SVG 与 GeoJSON 输出,支持详细面板、全球/极区/地球投影、边界闭合、时间标记和拓扑签名 - 扩展日月食候选搜索、局地搜索、沙罗序列预计算与范围外推,补充系列锚点和成员一致性校验 - 补齐古历纪年、儒略历独有闰日、多公历候选、历法改革跨日及精确日期运算接口 - 优化 ΔT、章动、恒星时、月球地平线、事件根搜索和本地星历缓存,降低重复计算开销并提升边界稳定
26 lines
640 B
Go
26 lines
640 B
Go
package tools
|
||
|
||
import (
|
||
"fmt"
|
||
"math"
|
||
)
|
||
|
||
// Format 把角度格式化为度分秒;typed 为 0 时输出度分秒,非 0 时输出时分秒 / format an angle as degrees-minutes-seconds, or hours-minutes-seconds when typed is non-zero.
|
||
func Format(val float64, typed uint8) string {
|
||
belowZero := false
|
||
if val < 0 {
|
||
belowZero = true
|
||
val = -val
|
||
}
|
||
degree := math.Floor(val)
|
||
min := math.Floor((val - degree) * 60)
|
||
sec := (val - degree - min/60) * 3600
|
||
if belowZero {
|
||
degree = -degree
|
||
}
|
||
if typed == 0 {
|
||
return fmt.Sprintf("%.0f°%.0f′%.2f″", degree, min, sec)
|
||
}
|
||
return fmt.Sprintf("%.0fh%.0fm%.2fs", degree, min, sec)
|
||
}
|