簡體   English   中英

C ++中的int和double操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM