VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 809|回复: 5

为什么输出的值与预定的值不正确?高手请进。

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-4 22:00:01 | 显示全部楼层 |阅读模式
long a = 116;
long b = 20;
long c = 43;
long d = (a+(double)b/60+(double)c/3600)*100000;
cout<<"d="<<d<<endl;

为什么输出是d=11634527?
通过计算器并四舍五入应该是11634528。

谁能说一下这是什么问题?怎样解决?
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-4 23:39:01 | 显示全部楼层
计算机处理时 并不是四舍五入的
它把小数转换成整数是把小数后的都截掉
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-5 10:33:01 | 显示全部楼层
有没有什么方法可以得到正确的值?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-5 10:57:01 | 显示全部楼层
使用四舍五入函数,或者自己进行处理
回复

使用道具 举报

0

主题

22

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-1-8 22:00:01 | 显示全部楼层
取整前加0.5
回复

使用道具 举报

0

主题

9

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-3 18:15:01 | 显示全部楼层
有没有什么方法可以得到正确的值?
-------------------------------------

什么是正确的值?四舍五入的结果就是正确的值吗?具体问题具体分析!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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