我正在尝试将纬度和经度位置从度、分、秒转换为十进制度数。但是,当我尝试在 C++ 中执行此操作时,它会将数字四舍五入并且不给出小数形式。我认为这是因为 double 和 int 混合操作,但我似乎找不到问题所在。我在下面包含了我的代码。任何帮助将不胜感激。
#include <iomanip>
#include <cmath>
#include <iostream>
#include <string>
using namespace std;
int main()
{
int user_degrees_latitude, user_minutes_latitude, user_seconds_latitude, user_degrees_longitude, user_minutes_longitude, user_seconds_longitude;
double total_minutes_latitude, total_degrees_latitude, total_minutes_longitude, total_degrees_longitude;
const double sixtieth = (1/60);
cout<< "Input latitude in degrees, minutes, seconds:";
cin >> user_degrees_latitude >> user_minutes_latitude >> user_seconds_latitude;
cout << "Input longitude in degrees, minutes, seconds:";
cin >> user_degrees_longitude >> user_minutes_longitude >> user_seconds_longitude;
total_minutes_latitude = (user_minutes_latitude + (((sixtieth)*user_seconds_latitude));
total_degrees_latitude = (abs(user_degrees_latitude) + ((sixtieth)*total_minutes_latitude));
total_minutes_longitude = (user_minutes_longitude + ((sixtieth)*user_seconds_longitude));
total_degrees_longitude = (abs(user_degrees_longitude) + ((sixtieth)*total_minutes_longitude));
cout << user_degrees_latitude << " deg " << user_minutes_latitude << "\' " << user_seconds_latitude << "\" latitude, " << user_degrees_longitude << " deg " << user_minutes_longitude << "\' " << user_seconds_longitude << "\"";
cout << " is (" << total_degrees_latitude << "," << total_degrees_longitude << ")"<<endl;
return 0;
}
最佳答案
1/60
是整数除法,向零舍入。这意味着您的 sixtith
变量是 0
。您可能也在其他地方进行整数除法。如果您希望除法是 float ,请确保至少有一个参数是 float 。
关于c++ - C++ 中的 int 和 double 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263854/