1

我正在寻找一种将小数转换为 C 中的度数的方法。例如,C 中的 asin() 函数返回一个十进制数,但我需要该数字以度°分“秒”为单位。

例如 1.5 将是 1°30'0"

4

2 回答 2

4

asin函数返回弧度。一个圆有 2 个 π 弧度。

一圈有360度,一个度有60分,一分钟有60秒。所以一圈有360*60*60秒。

double radians = asin(opposite / hypotenuse);
int totalSeconds = (int)round(radians * 360 * 60 * 60 / (2 * M_PI));
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int degrees = totalSeconds / (60 * 60);
于 2012-04-28T04:32:37.507 回答
1

不确定如何使用 ti84 上的 >dms 之类的命令执行此操作,但您可以使用逻辑。

  1. 度的整个单位将保持不变(即在经度 121.135° 中
    ,从 121° 开始)。
  2. 将小数乘以 60(即 0.135 * 60 = 8.1)。

  3. 整数变为分钟 (8')。

  4. 取剩余的小数并乘以 60。(即 0.1 * 60 = 6)。

  5. 结果数字变为秒 (6")。秒可以保留为小数。
  6. 把你的三组数字放在一起,使用度数 (°)、分钟 (') 和秒 (") 的符号(即 121°8'6" 经度) 来源: http://geography.about。 com/library/howto/htdegrees.htm

稍作搜索,我在 c# 中找到了这个: 从十进制度转换为度分秒十分之一。

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);

但正如他所说,它需要首先从弧度转换为度数。

于 2012-04-28T04:26:41.053 回答