我正在寻找一种将小数转换为C中的度数的方法。例如,C中的asin()函数返回一个十进制数,但我需要该数字以度为单位'秒'。
e.g。 1.5将是1°30'0“
答案 0 :(得分: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);
答案 1 :(得分:1)
不知道如何使用ti84上的> dms之类的命令执行此操作,但您可以使用逻辑。
将小数乘以60(即.135 * 60 = 8.1)。
整数变为分钟(8')。
取剩余的小数并乘以60.(即.1 * 60 = 6)。
一点点搜索,我在c#中找到了这个: Converting from Decimal degrees to Degrees Minutes Seconds tenths.
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);
但正如他所说,它需要首先从弧度到度数。