北美微论坛

App下载
扫码下载 App
联系我们
1框架
查看: 1038|回复: 8
打印 上一主题 下一主题

[CS/EE] 为什么要用1.0 代替1? C++

[复制链接]

副教授

Rank: 9Rank: 9Rank: 9

最佳新人

跳转到指定楼层
楼主
发表于 2015-9-6 17:53:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iostream>
using namespace std;
int main()
{
        double x, y, z, r;
        cout << "please enter the rate of rainfall in inches per hour:  ";
        cin >> x;
        cout << "Please enter the number of minutes the rain shower lasted:  ";
        cin >> y;
       
z = y * (1.0 / 60 * x);  // 为什么要用1.0 代替1?
        r = 12 / z;
        cout << "Rate of " << x << " inches per hour for " << y << " minutes." << endl;
        cout << "The total rainfall is " << z << " inches or " << r << " feet." << endl;
        return 0;
}

收藏收藏 分享分享 赞赞赞!赞赞赞! 踩踩踩!踩踩踩! 新浪微博微博分享
回复

使用道具 举报

博士后

Rank: 7Rank: 7Rank: 7

沙发
发表于 2015-9-6 19:57:58 | 只看该作者
因为1是integer, 1.0算出来才是double
回复

使用道具 举报

高级院士

大家不要慌我是司马光

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

论坛元老最佳新人常驻居民

板凳
发表于 2015-9-11 07:30:06 | 只看该作者
1/60=0
1.0/60=0.166667
回复

使用道具 举报

大学生

Rank: 4

地板
发表于 2015-9-13 12:25:50 | 只看该作者
因为是double啊, 你用int就可以用1了
回复

使用道具 举报

博士后

Rank: 7Rank: 7Rank: 7

5#
发表于 2015-9-13 19:33:50 | 只看该作者
应为定义了double
回复

使用道具 举报

高中生

Rank: 3Rank: 3

6#
发表于 2015-9-15 08:59:50 | 只看该作者
KT000000 发表于 2015-9-11 07:30
1/60=0
1.0/60=0.166667

1.0/60=0.0166667
回复

使用道具 举报

小学生

Rank: 1

7#
发表于 2015-9-15 12:38:21 | 只看该作者
KT000000 发表于 2015-9-11 07:30
1/60=0
1.0/60=0.166667

内行人
回复

使用道具 举报

博士

Rank: 6Rank: 6

8#
发表于 2016-12-16 20:56:15 来自手机 | 只看该作者
回复

使用道具 举报

初中生

Rank: 2

9#
发表于 2016-12-16 22:28:55 来自手机 | 只看该作者
因为1.0/60这个运算会先进行啊,如果用1的话,那么就是执行1/60,而C++看到这个表达式之后会把1和60都看成是整形,所以运算完的结果也是整形,所以就变成了1/60=0.
这样的结果应该是不符合上下文的吧
来自: iPhone客户端
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部