一篇文章教你普遍使用的c/c++有关小数的知识点

1、如何保留n位有效数字?(自带四舍五入)

 setprecision(n)

功能:控制浮点数显示的有效数字个数。

图中可以看出,只用setprecision(n)是控制保留几位有效数字的。

由8-9两行代码可以看出,也是只写一次就可以。
8-10行可以看出,只是四舍五入修改了数字的显示方法,并不是修改原数字。从常识我们可以知道,如果12.345数字本身改变,那就是两位有效数字变为 12,那从两位有效数字改为四位有效数字会变为 12.00,而不是12.34。
11-12行可以看出如果要保留的太多,是不会补上0的(往下看有补0的方法)。
13行中可以看出,如果小数点前的位数多于你要保留位数,则会使用科学计数法。

然后你会发现,如果你要保留的位数多于数字原来的小数,就会补上0。

2、如何保留n位小数/保留小数点后n位?(自带四舍五入)

    #include <iomanip>  //不要忘了头文件

    //第一种写法
    cout<<setiosflags(ios::fixed)<<setprecision(n)<<x;
  //第二种写法
    cout.setf(ios::fixed);
    cout<<setprecision(n)<<x;
     //第三种写法
    cout<<fixed<<setprecision(n)<<x;

注意:setprecision单独使用是控制有效位数的,与fixed合用才是控制小数点后位数的

    float a=12.123456;
    cout<<setprecision(3)<<a; //输出12.1
    cout<<fixed<<setprecision(3)<<a;//输出12.123

fixed是设置补0,以下三种写法任选其一即可

cout<<setiosflags(ios::fixed);
    cout.setf(ios::fixed);
    cout<fixed;

如果不想补0,可以设置关闭fixed

cout.unsetf(ios::fixed); 

3、浮点数如何保留小数点后n位?

C语言精度控制so easy

float a=123.45;
double b=22.3736723;
printf("%.5f %.2f %.12f",12.3,a,b);//输出:12.30000 123.45 22.373627230000
 

%f 格式化输出浮点型数据,在%之后加上“.n”即可。

#include  <stdio.h>
int main()
{
    float PI=3.1415926;
    float R=5.3;

    printf("PI=%.2f\n", PI); //输出:PI=3.14
    printf("面积 = %.2f\n", PI * R * R); //输出:面积 = 88.25
    printf("面积 = %f\n", PI * R * R);   //输出:面积 = 88.247337
    printf("面积 = %.8f\n", PI * R * R); //输出:面积 = 88.24733734
        return 0;
}

//不设定保留几位小数,则默认六位

4、向上、向下取整

#include <cmath>//不要忘了头文件

ceil(x) 向上取整、floor(x)向下取整,比如

ceil(3.14)、ceil(3.55)都等于4

floor(3.14)、floor(3.55)都等于3

5、如何不使用科学计数法

十进制数输出

用C++编程的时候,如果输出的数字太大,系统默认按科学计数法输出结果,这样的显示不是很直观,所以我们要改成平常用的十进制。

只需要在输出结果前面加上:

cout.setf(ios_base::fixed,ios_base::floatfield);

或者

cout.setf(ios::fixed,ios::floatfield);

如果上面的不行就改成下面的,按道理应该是下面的那一句通用一点。

注意:虽然上面都说要包含头文件,但是c++有万用头文件

#include<bits/stdc++.h>//万能头文件

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值