查看: 540|回复: 2

[C/C++] C++玄学问题

[复制链接]

0

技术

7

魅力

1

原创

退休版主

心如止水,笑对人生!

Rank: 8Rank: 8

积分
11198
人气
125
分享
525

最佳新人活跃会员

发表于 2023-12-12 22:08:34 | 显示全部楼层 |阅读模式
        之前被学校拉去参加信奥了,遇到一个很神奇的问题,问一下大家:

         一开始的时候,我是用float分别定义了骑车和走路的时间(b和c),但是别的代码运行正常,在两者相等时,仍输出Bike,代码如下:
[C++] 纯文本查看 复制代码
#include <iostream>
using namespace std;
int main(){
	int a;
	float b,c;
	cin >> a;
	b = a/1.2;
	c = a/3.0;
	c = c+50;
	if(b<c){
		cout << "Walk";
	}
	if(b==c){
		cout << "All";
	}
	if(b>c){
		cout << "Bike";
	}
	return 0;
}

        后来把数据类型改为double就正常了,这是为什么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
faryou的个人主页
一名在学业与生活夹缝中生存的小站长

0

技术

0

魅力

0

原创

初出茅庐

Rank: 2

积分
217
人气
0
分享
0
发表于 2024-3-11 15:37:42 | 显示全部楼层
不是玄学,x86架构的计算原理而已,处理方法有好几种
1.计算结果改成double类型
2.在常数后面加浮点占位符例如:1.2f   3.0f
3.大数库
4.手动纠正精度

0

技术

0

魅力

0

原创

初出茅庐

Rank: 2

积分
186
人气
0
分享
0
发表于 2024-10-4 20:30:36 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表