首页 > 编程语言 >C / C++ 保留两位小数(setprecision(n)的一些用法总结)

C / C++ 保留两位小数(setprecision(n)的一些用法总结)

时间:2024-06-11 21:44:40浏览次数:3  
标签:两位 cout setprecision 保留 C++ 有效数字 小数

转载:https://blog.csdn.net/qq_36667170/article/details/79265224

做题遇到保留两位小数的题目,课本上写的又多又杂,网上查来的也是一堆内容需要筛选,눈_눈还是自己总结一下吧。


首先说C++代码

	#include <iomanip>  //不要忘了头文件
	//第一种写法
	cout<<setiosflags(ios::fixed)<<setprecision(2);
	//第二种写法
	cout.setf(ios::fixed);
	cout<<setprecision(2);
	//第三种写法
	cout<<fixed<<setprecision(2);
  • 要保留几位小数setprecision(n)的括号里n就换成几。
  • 前两种写法是一样的,第三种是简化写的。
  • 上面的语句写一次就行了,对之后的数字都有效。

然后说C的代码

个人感觉c的输出比较简单粗暴。

  • %f 格式化输出浮点型数据,在%之后加上“.n”即可。例如:
#include  <stdio.h>
int main()
{
	float PI=3.1415926;
	float R=5.3;
	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;
}
  • %.2f\n中的“.2”即保留两位小数
  • //不设定保留几位小数,则默认六位

如果单纯会用就行,看到这里就可以了!


想深入理解的,继续看下面눈_눈

1.首先解释一下“语句写一次就行了,对之后的数字都有效”。在s之后设置保留两位小数之后,重新声明另一个数,输出依旧显示两位小数。所以设置精度语句只需写一次就可以了。

#include <iostream>
#include <iomanip>   //设置必备的头文件
using namespace std;
int main()
{
	double s=12.345;
	cout<<setiosflags(ios::fixed)<<setprecision(2);
	cout<<s<<endl;   //输出12.35
	float pi=3.14159;
	cout<<pi<<endl;   //输出3.14
	return 0;
}

2.setprecision(n)
   功能:控制浮点数显示的有效数字个数。

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

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

2.5补充一小点showpoint
  这里写图片描述
  这是在尝试过程中发现的一个无聊操作,如果12.34保留两位有效数字,会显示12,但是你可以经过这个操作让它显示12. 哈哈哈哈哈哈哈注意有个“.”ヽ(•̀ω•́ )ゝ!

	double s=12.345;
	cout<<s<<endl;   //输出原数12.345
	cout<<setprecision(2);
	cout<<s<<endl;   //输出保留两位有效数字12
	cout.setf(ios::showpoint);//或者写cout<<setiosflags(ios::showpoint);
	cout<<s<<endl;   //输出保留两位有效数字外加一个小数点12.

3.fixed
  setprecision(n)和fixed合用的话可以控制小数点后有几位。
  只要加上以下任意一个语句就可以。

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

然后你会发现,如果你要保留的位数多于数字原来的小数,就会补上0。
这里写图片描述

标签:两位,cout,setprecision,保留,C++,有效数字,小数
From: https://www.cnblogs.com/mingyuer/p/18242785

相关文章

  • C++基础入门学习记录
    本系列基于黑马程序员|c++课程,记录学习相关视频——黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibiliC++基础入门2数据类型C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存2.1整型作用:整型变量表示的是=......
  • CH01_初识C++
    CH01_初识C++第一个C++程序新建项目新建文件编写代码#include<iostream>usingnamespacestd;intmain(){ cout<<"helloworld"<<endl; system("pause"); return0;}运行程序注释作用:在代码中加一些说明和解释,方便阅读代码。两种格式:单行注释://这是......
  • C++面向对象语言自制多级菜单
    因为要做一个小应用,需要一个菜单类,在网上找了许久,也没有找到一款心仪的菜单类,索性用C++语言,自制一个命令行级别的菜单类,并制作成库,现记录下来,供以后借鉴。一、特性无限制条目无限制层级用户自定义条目和动作脚本式生成菜单类二、代码实现(一)菜单类菜单类主要负责菜单的......
  • C++ try-catch 语句的注意事项
    在C++中,try-catch 语句用于处理异常。当在 try 块中的代码抛出一个异常时,程序会立即跳出 try 块,并查找与之匹配的 catch 块来执行。以下是使用 try-catch 语句时需要注意的一些事项:异常类型匹配:catch 块后面必须跟上一个异常类型(或者是省略类型以捕获所有类型的......
  • OpenCV实战案例——直线检测[C++]
    0.前言本文以实战案例为背景,一步步讲述如何使用计算机图像处理相关知识提取图片中英语填空题答题线。1.需求背景某公司打算设计一款英语题目批改APP,要求学生上传英语填空题图片,然后该APP自动标注答题线位置(使用红线标注),方便后续定位和批改答案。下图(图1-1)为某一学生上传的......
  • python怎么保留小数
    保留两位小数,并做四舍五入处理方法一:使用字符串格式化a = 12.345print("%.2f" % a)# 12.35方法二:使用round内置函数a = 12.345a1 = round(a, 2)print(a1)# 12.35方法三:使用decimal模块from decimal import Decimala = 12.345Decimal(a).......
  • 基于Vue+Node.js的高校学业预警系统+10551(免费领源码)可做计算机毕业设计JAVA、PHP、爬
    NodeJS高校学业预警系统摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,教育行业当然也不能排除在外。高校学业预警系统是以实际运用为开发背景,运用软件工程开发方法,采用Node.JS技术构建的一个管理系统。......
  • 华为OD机试 C++ - 中文分词模拟器
    中文分词模拟器前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:nansun0903@163.com;备注:CSDN。题目描述给定一个连续不......
  • 华为OD机试 C++ - 找数字
    找数字前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:nansun0903@163.com;备注:CSDN。题目描述小扇和小船今天又玩起来......
  • 华为OD机试 C++ - 根据IP查找城市
    根据IP查找城市前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:nansun0903@163.com;备注:CSDN。题目描述某业务需要根据......