C++ c+中的意外输出+;代码,未获得预期结果
我制作这个程序是为了显示时钟中所有可能的时间,如果在小时和分针之间给定一个角度C++ c+中的意外输出+;代码,未获得预期结果,c++,C++,我制作这个程序是为了显示时钟中所有可能的时间,如果在小时和分针之间给定一个角度 #include <iostream> #include <fstream> #include <string> #include <vector> #include <math.h> using namespace std; int main(){ //ifstream cin("input.txt"); vector <floa
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <math.h>
using namespace std;
int main(){
//ifstream cin("input.txt");
vector <float> hour , min , angle;
string str;
int h , m ;
float diff, cal1 ,cal2 , i , j;;
h = 11 ;
m = 59;
for ( i = 0 ; i <= h ; i++ ){
for ( j = 0 ; j <= m ; j = j + 1){
cal1 = (i*60/2) + (j/2); // hour angle
cal2 = (j*6); // min angle;
diff = fabs(cal1 - cal2) ;
if ( diff > 180 ){
diff = 360.0000 - diff ;
}
//cout << cal1 << " " << cal2 << " " << diff << endl;
hour.push_back(i);
min.push_back(int(j));
angle.push_back(diff);
}
}
int t , value , size;
cin >> t;
size = hour.size();
while( t-- ){
cin >> value;
for ( int i = 0 ; i < size;i++ ){
//cout << angle[i] << endl;
if ( value == angle[i] ){
if ( hour[i] > 9 && min[i] > 9 ){
cout << hour[i] <<":" << min[i] << endl;
}
else if ( hour[i] <= 9 && min[i] > 9 ){
cout << "0" << hour[i] <<":" << min[i] << endl;
}
else if ( hour[i] > 9 && min[i] <= 9 ){
cout << hour[i] <<":" << "0" << min[i] << endl;
}
else {
cout << "0" << hour[i] <<":" << "0" << min[i] << endl;
}
}
}
}
}
我得到
02:00
10:00
00:00
01:00
11:00
00.00
但我应该得到这个
02:00
10:00
01:00
11:00
当我输入这个作为输入时
2
30.0000
60.0000
我得到
02:00
10:00
00:00
01:00
11:00
00.00
当我去掉输入中的零并给它整数时,它会显示正确的答案,但对于浮点数,它会给出错误的答案。
我用ideone运行了这段代码。它给出了同样的问题。值的数据类型为
int
,但输入要求float
:
尝试将
int value
替换为浮点值
使用=
比较浮点通常是错误的,因为浮点不准确。考虑在小范围内检查值。@牧马人谢谢。我想我的眼睛不见了。。。