如何提高以下的準確度(精度)?如何提高代碼的精確度
struct Degree_Minutes { signed int degrees; signed int minutes; double seconds; };
Degree_Minutes geo_dec_to_deg (double dec)
{
Degree_Minutes degrees_minutes;
signed int degrees, minutes;
double remainder, temp, seconds;
remainder = fmod(dec, 1);
degrees_minutes.degrees = dec - remainder;
temp = remainder*60;
remainder = fmod(temp,1);
degrees_minutes.minutes = temp-remainder;
degrees_minutes.seconds = remainder*60;
return degrees_minutes;
}
double geo_deg_to_dec (Degree_Minutes degrees)
{
double decimal = degrees.degrees + (degrees.minutes/60) + (degrees.seconds/60);
return decimal;
}
int main(int argc, char **argv)
{
Degree_Minutes deg;
double decimal = 38.898556;
deg = geo_dec_to_deg(decimal);
cout << "Results of geo_dec_to_deg function: \n" << decimal << " was converted to " << deg.degrees << " degrees, " << deg.minutes << " minutes, " << deg.seconds << " seconds.\n";
decimal = geo_deg_to_dec(deg);
cout << "Results of geo_dec_to_deg function: \n" << deg.degrees << " degrees, " << deg.minutes << " minutes, " << deg.seconds << " seconds was converted to " << decimal << "\n";
return EXIT_SUCCESS;
}
編輯:忘了補充,這裏有一個結構:
struct Degree_Minutes { signed int degrees; signed int minutes; double seconds; };
通過你從十進制轉換爲度/分/秒的時間,然後回十進制你風與38.9134當原來是38.898556。
哦,順便說一句我忘記注意結構:struct Degree_Minutes {signed int degrees;簽名int分鐘;雙秒; }; –
請編輯帖子以包含此新信息。 –
沒有必要包含Degree_Minutes聲明,因爲它可以從所提供的信息中推導出來。 (如果'minutes'已被聲明爲浮點數或'seconds'已被聲明爲整數,則將獲得不同的結果。) –