四舍五入(c++实现)

 

思路:如果直接对一个浮点数取四舍五入,不保留小数部分,那么我们的思路是:正数加上0.5,负数减去0.5,代码如下:

  

1 #include <iostream>
2 
3 using namespace std;
4 
5 int round1(double number) 
6 {
7     return (number>0.0)?(number+0.5):(number-0.5);
8 }

或者

1 #include <iostream>
2 #include <cmath>
3 
4 using namespace std;
5 
6 int round2(double number) 
7 {
8     return (number>0.0)?floor(number+0.5):ceil(number-0.5);
9 }

如果要对浮点数按位四舍五入,就要换种方式。比如要对1.12345保留4位小数,先乘以10000(10^4,几位小数就是几次方),然后加0.5,得11235,再除以10000,得到1.1235。代码如下:

 1 //按位四舍五入
 2 #include <iostream>
 3 #include <stdio.h>
 4 using namespace std;
 5 
 6 double round3(double number,int bits) //number->浮点数,bits->保留位数
 7 {
 8     for(int i=0;i<bits;++i)
 9     {
10         number*=10;
11     }
12     number=(long long)(number+0.5);
13     for(int i=0;i<bits;++i)
14     {
15         number/=10;
16     }
17     return number;
18 }
19 
20 int main()
21 {
22     double x;
23         int n;    
24     cin>>x>>n;
25     printf("%.15f",round3(x,n));
26 }

但这样做也有个bug,就是double的精度只在小数点后15-16位之间(正数15位,负数16位),所以最多也只能精确到这样子,n更大就失效了。如果有更高精度的需求,想到再更。

原文链接: https://www.cnblogs.com/kiritozhj/p/10019292.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    四舍五入(c++实现)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/285791

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午8:51
下一篇 2023年2月15日 上午8:52

相关推荐