杭电acm1006题求解
答案:1 悬赏:30 手机版
解决时间 2021-03-25 06:48
- 提问者网友:锁深秋
- 2021-03-24 17:31
杭电acm1006题求解
最佳答案
- 五星知识达人网友:老鼠爱大米
- 2021-03-24 17:57
houh += 1/120;这个等同于
houh += 0;
因为1 / 120就是0
追问那为什么运行测试输入0的时候sec只有前3600s增加呢?正常不是一个43200s内都增加么?追答mh = fabs(minh - houh);
sh = fabs(seh - houh);
sm = fabs(seh - minh);这三个结果可能会大于360
导致
if (mh>180) mh = 360 - mh;
if (sm>180) sm = 360 - sm;
if (sh>180) sh = 360 - sh;三个都变成了负数
追问为什么那个minh == 360的判断没有效果,调试的时候minh = 0没有执行过追答对浮点数进行判等是很容易失败的。
有兴趣试一下下面的代码
#include
int main() {
double x = 0;
for (int i = 0; i < 10; i++) {
x = x + 0.1;
}
printf("%.10f %.10f
", x, 1.0); // 输出1.0 和 1.0
if (x == 1.0) { // 但是对x进行1.0判等会失败
puts("x == 1.0");
}
else {
puts("x != 1.0");
}
}追问我懂了,谢谢!
houh += 0;
因为1 / 120就是0
追问那为什么运行测试输入0的时候sec只有前3600s增加呢?正常不是一个43200s内都增加么?追答mh = fabs(minh - houh);
sh = fabs(seh - houh);
sm = fabs(seh - minh);这三个结果可能会大于360
导致
if (mh>180) mh = 360 - mh;
if (sm>180) sm = 360 - sm;
if (sh>180) sh = 360 - sh;三个都变成了负数
追问为什么那个minh == 360的判断没有效果,调试的时候minh = 0没有执行过追答对浮点数进行判等是很容易失败的。
有兴趣试一下下面的代码
#include
int main() {
double x = 0;
for (int i = 0; i < 10; i++) {
x = x + 0.1;
}
printf("%.10f %.10f
", x, 1.0); // 输出1.0 和 1.0
if (x == 1.0) { // 但是对x进行1.0判等会失败
puts("x == 1.0");
}
else {
puts("x != 1.0");
}
}追问我懂了,谢谢!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯