어떻게 다음의 정확도를 향상시킬 수 있습니까?코드의 정밀도를 향상시키는 방법
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이었다.
아, BTW 구조체에주의하지 않았습니다. struct Degree_Minutes {signed int degrees; signed int minutes; 2 초; }; –
이 새 정보를 포함 할 소식을 수정하십시오. –
제공된 정보에서 가능한대로 Degree_Minutes 선언을 포함 할 필요는 없습니다. ('minutes '이 부동 소수점으로 선언되었거나'seconds'가 정수로 선언 되었다면, 다른 결과가 얻어 질 것입니다.) –