C++ C+中的int和double运算+;

C++ C+中的int和double运算+;,c++,int,double,C++,Int,Double,我正在尝试将纬度和经度位置从度、分、秒转换为十进制度数。但是,当我尝试在C++中这样做时,它将数字舍去,而不给小数形式。我认为这是因为double和int混合运算,但我似乎找不到问题所在。我在下面包含了我的代码。任何帮助都将不胜感激 #include <iomanip> #include <cmath> #include <iostream> #include <string> using namespace std; int main() {

我正在尝试将纬度和经度位置从度、分、秒转换为十进制度数。但是,当我尝试在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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
int user_度_纬度、user_分_纬度、user_秒_纬度、user_度_经度、user_分_经度、user_秒_经度;
双倍总分纬度、总度纬度、总分经度、总度经度;
常数双六十=(1/60);
cout>用户度纬度>>用户分纬度>>用户秒纬度;
cout>用户度经度>>用户分经度>>用户秒经度;
总分纬度=(用户分纬度+((六十)*用户秒纬度));
总纬度=(abs(用户纬度)+(六十度)*总分纬度);
总分钟经度=(用户分钟经度+((六十)*用户秒经度));
总经度=(abs(用户经度)+(六十度)*总分经度);

cout
1/60
是整数除法,它向零舍入。这意味着您的
60th
变量是
0
。您可能也在其他地方进行整数除法。如果您希望除法是浮点,请确保至少有一个参数是浮点。

1/60
是整数除法,这是一种常见的除法ds向零移动。这意味着您的
0
变量是
0
。您可能也在其他地方进行整数除法。如果您希望除法是浮点,请确保至少有一个参数是浮点。

我没有查看所有代码,但这是错误的:

const double sixtieth = (1/60);
1/60
始终是
0
。这不是混合运算,它只是整数。您应该写:

const double sixtieth = (1.0/60);

我没有看完所有代码,但这是错误的:

const double sixtieth = (1/60);
1/60
始终是
0
。这不是混合运算,它只是整数。您应该写:

const double sixtieth = (1.0/60);

也可以做这项工作:

const double sixtieth = (double)1/60;
或C语言优先++

const double sixtieth = static_cast<double>(1)/60;

也可以做这项工作:

const double sixtieth = (double)1/60;
或C语言优先++

const double sixtieth = static_cast<double>(1)/60;

那么我怎么才能乘1/60呢?
1/60
或者
1/60.
或者更清楚地说
1.0/60.0
。为什么你甚至有一个
60
变量?被60除不是更容易吗?那么我怎么才能乘1/60呢?
1/60
或者
1/60.
或者更清楚地说
1.0/60.0
。为什么你甚至有一个
6tieth
变量?除以60不是更容易吗?