“四舍六入五留双”问题

四舍六入五留双

问题描述
输入一个实数f,和一个位数d
输出实数f,在保留d位小数下的结果,采用四舍六入五留双的近似。
f至多有30位小数。
0 <= f <= 1
1 <= d <= 8
所谓四舍六入五留双,是指如果恰好是0.5的情况,会把他近似到使得前一位是偶数。
比如近似到整数,0.4为0,0.5为0,0.50001为1,0.6为1,1.5为2,2.5为2。

输入
一行一个浮点数f和一个位数d。

输出
一行一个浮点数表示答案

输入样例

0.123456789 5

输出样例

0.12346
解题思路

四舍六入五留双其实是计算机程序中的进位方法,直接调用已有函数就行。

参考代码

#include <iostream>
#include<iomanip>
using namespace std;

int main(){
	double f;
	int d;
	cin >> f >> d;
	cout<<fixed<<setprecision(d)<<f<<endl;
	return 0;
}

问题
例外的,数字19.755保留2位小数时,不符合“四舍六入五留双”规则。因为其在计算机中用二进制存储的是19.754999999999999,所以保留2位小数时得到的结果是19.755。
那么,在计算的时候该使用那种规则呢?我百思不得其解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值