![](/img/trans.png)
[英]How to correctly store the result of arithmetic operations on int type to double type and different types in C++?
[英]int and double operations in C++
我正在嘗試將緯度和經度位置從度,分,秒轉換為十進制度數。 但是,當我嘗試在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
是整數除法,四舍五入為零。 這意味着您的sixtieth
變量是0
。 您可能也在其他地方進行整數除法。 如果希望除法是浮點數,請確保至少有一個參數是浮點數。
我沒有仔細閱讀所有代碼,但這是錯誤的:
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 = 1.0/60;
盡管在使用右值時,這里還是首選。
如果是左值,則需要double或static_cast:
int numerator = 1;
int denominator = 60;
const double sixtieth = (double) numerator/denominator;
const double sixtieth = static_cast<double>(numerator)/denominator;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.