-
C / C++ 保留两位小数(setprecision(n)的一些用法总结)
2018-02-05 22:49:46做题遇到保留两位小数的题目,课本上写的又多又杂,网上查来的也是一堆内容需要筛选,눈_눈还是自己总结一下吧。 首先说C++代码 #include <iomanip&gt...做题遇到保留两位小数的题目,课本上写的又多又杂,网上查来的也是一堆内容需要筛选,눈_눈还是自己总结一下吧。
首先说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。
_(:3 」∠) 我是萝莉安,梦想是做个程序媛……
有CSDN账号的帮我点个赞或者评论一下吧,不愿意也不强求啦。
你们点赞评论我才会得积分,才会升等级,等级高了才能给博客换好看的皮肤🥰🥰 -
Python保留指定位数的小数
2019-09-06 10:22:51Python保留指定位数的小数1 ’%.2f’ %f 方法(推荐)2 format函数(推荐)3 round()函数4 不进行四舍五入,直接进行截断 1 ’%.2f’ %f 方法(推荐) f = 1.23456 print('%.4f' % f) print('%.3f' % f) print('%....Python保留指定位数的小数
1 ’%.2f’ %f 方法(推荐)
f = 1.23456 print('%.4f' % f) print('%.3f' % f) print('%.2f' % f)
结果:
1.2346
1.235
1.23
这个方法会进行四舍五入2 format函数(推荐)
print(format(1.23456, '.2f')) print(format(1.23456, '.3f')) print(format(1.23456, '.4f'))
1.23 1.235 1.2346
这个方法会进行四舍五入
3 round()函数
其实这个方法不推荐大家使用,查询资料发现里面的坑其实很多,python2和python3里面的坑还不太一样,在此简单描述一下python3对应的坑的情况。
a = 1.23456 b = 2.355 c = 3.5 d = 2.5 print(round(a, 3)) print(round(b, 2)) print(round(c)) print(round(d))
1.235 # 1.23456最终向前进位了 2.35 # 2.355居然没进位 4 # 最终3.5居然变为4了 2 # 最终2.5取值变为2
(1)通过上面的函数,看着是不是很晕,感觉round(x,n)函数是否进位也没看出是啥规律
(2)round(x,n)函数中,是否进位或四舍五入,取决于n位以及n+1位小数的值
(3)只有当n+1位数字是5的时候,容易混淆,如果n为偶数,则n+1位数是5,则进位,例如round(1.23456,3)最终变为1.235
(4)如果n为奇数,则n+1位是数5,那不进位,例如round(2.355,2),最终为2.35
(5)如果n为0,即没有填写n的时候,最终结果与上面相反,即整数部分为偶数的时候,小数位5不进位,例如(round(2.5)变为2)。
(6)整数部分为奇数的时候,小数位5进位。(round(3.5)变为4)
————————————————4 不进行四舍五入,直接进行截断
(1)可以放大指定的倍数,然后取整,然后再除以指定的倍数。
#保留三位小数截断 python3 print(int(1.23456 * 1000) / 1000 )
(2) 使用字符串截取,截取小数点后指定的位数
原文链接:
-
C语言printf(““),浮点数打印保留有效位数,小数部分的四舍五入
2017-07-13 19:16:381.printf("%3.0f",floatNum):不保留小数 说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽; 注意:这里的3只代表整数部分至少占3位,舍弃小数点和...1.printf("%3.0f",floatNum):不保留小数
说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽;
注意:这里的3只代表整数部分至少占3位,舍弃小数点和小数点后面的部分
2.printf("%6.2f".floatNum):保留两位小数
说明:%6.2f 表明待打印的数(floatNum)至少占6个字符宽度(包括两位小数和一个小数点),且小数点后面有2位小数,小数点占一位,所以整数部分至少占3位。
注意:这里的6是待打印的数至少占据的字符宽度,包括两位小数(如果小数不够两位用0补位,例如100.1打印出来为100.10)和一个小数点,所以整数部分至少占3个字符宽度。
3.单精度实数的有效位数一般为7位,输出6位小数,超出有效位数输出就是错误的。
4.双精度数有效位数一般为16位,输出6位小数,超出有效位数可能截断或错误值。
5.关于保留小数点后有效位数四舍五入原则
#include<stdio.h> int main() { printf("%f\n", 100.00); printf("%.0f\n", 100.00); printf("\n"); printf("%f\n", 100.30); printf("%.0f\n", 100.30); printf("\n"); printf("%f\n", 100.50); printf("%.0f\n", 100.50); printf("\n"); printf("%f\n", 100.53); printf("%.1f\n", 100.53); printf("\n"); printf("%f\n", 100.55); printf("%.1f\n", 100.55); printf("\n"); printf("%f\n", 100.56); printf("%.1f\n", 100.56); printf("\n"); printf("%f\n", 100.563); printf("%.2f\n", 100.563); printf("\n"); printf("%f\n", 100.565); printf("%.2f\n", 100.565); printf("\n"); printf("%f\n", 100.566); printf("%.2f\n", 100.566); printf("\n"); return 0; }
运行结果:
注意:从图中可以看出,保留0位小数的时候,只要小数点后第一位>=5,就可以进位,但是保留1位或者2位等等,保留小数的后一位要>5才可以进位,否则就舍去。
我是根据运行结果看到,有可以解释下的,请留言,谢谢!
-
使用js,对数值保留小数点后两位的处理(两种情况)
2018-05-21 09:57:47Html部分: <div class="text primary-text"> <span>合计:</span> <span class="money">¥{{totalMoney | numFilter}}</span> </div>...// 情况一:保留...Html部分:
<div class="text primary-text"> <span>合计:</span> <span class="money">¥{{totalMoney | numFilter}}</span> </div>
Js部分:(注意toFixed方法只能用于数值型数据)
// 情况一:保留小数点后两位的过滤器,尾数四舍五入
filters: { numFilter (value) { let realVal = '' if (!isNaN(value) && value!== '') { // 截取当前数据到小数点后两位 realVal = parseFloat(value).toFixed(2) } else { realVal = '--' } return realVal } }
// 情况二:保留小数点后两位的过滤器,尾数不四舍五入(此处存在一个问题,当源数据小数点第三位为数字9,并且第四位会导致第三位进位的情况下,得到的最终数据仍然不是截取 eg: 3.1798 截取两位会变成3.18)
filters: { numFilter (value) { let realVal = '' if (!isNaN(value) && value!== '') { // 截取当前数据到小数点后三位 let tempVal = parseFloat(value).toFixed(3) realVal = tempVal.substring(0, tempVal.length - 1) } else { realVal = '--' } return realVal } }
// 情况二:优化成如下方式,自行封装成一个公共函数,即用即调
filters: { numFilter (value) { cutOutNum(value) } } ----- 将此函数封装在外部js中 ----- /** * 对源数据截取decimals位小数,不进行四舍五入 * @param {*} num 源数据 * @param {*} decimals 保留的小数位数 */ export const cutOutNum = (num, decimals) => { if (isNaN(num) || (!num && num !== 0)) { return '--' } // 默认为保留的小数点后两位 let dec = decimals ? decimals : 2 let tempNum = Number(num) let pointIndex = String(tempNum).indexOf('.') + 1 // 获取小数点的位置 + 1 let pointCount = pointIndex ? String(tempNum).length - pointIndex : 0 // 获取小数点后的个数(需要保证有小数位) // 源数据为整数或者小数点后面小于decimals位的作补零处理 if (pointIndex === 0 || pointCount <= dec) { let tempNumA = tempNum if (pointIndex === 0) { tempNumA = `${tempNumA}.` for (let index = 0; index < dec - pointCount; index++) { tempNumA = `${tempNumA}0` } } else { for (let index = 0; index < dec - pointCount; index++) { tempNumA = `${tempNumA}0` } } return tempNumA } let realVal = '' // 截取当前数据到小数点后decimals位 realVal = `${String(tempNum).split('.')[0]}.${String(tempNum) .split('.')[1] .substring(0, dec)}` // 判断截取之后数据的数值是否为0 if (realVal == 0) { realVal = 0 } return realVal }
-
BigDecimal 保留两位小数
2019-01-11 14:03:31java保留两位小数5种方法 四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() {... -
Python中保留两位小数的几种方法
2018-12-14 21:43:57保留两位小数,并做四舍五入处理 方法一: 使用字符串格式化 >>> a = 12.345 >>> print("%.2f" % a) 12.35 >>> 方法二: 使用round内置... -
SQL查询去除汉字保留数字 保留小数
2017-09-15 12:11:02SQL查询去除汉字保留数字 保留小数 -
R语言设置数值输出(保留至小数点后位数和保留有效数字)
2020-01-04 16:54:20R语言设置数值输出,包括保留至小数点后几位和保留有效数字。 -
python保留四位小数_如何用format函数保留小数?
2021-01-25 22:37:51大家有没有想过一个问题,为什么我们通常会使用四舍五入的方法保留小数,而不是采用其他方式?其实呀,四舍五入是一种精确度的保留法,与其他方法本质相同。但特殊之处在于,采用四舍五入,能使被保留部分的与实际值... -
numpy保留小数位数
2020-09-25 14:21:57import numpy as np n=2 data= numpy.around(a, n) 保留2位小数,n为3,则保留3位小数。 默认保留整数 -
C++输出保留两位有效数字和保留小数点后两位
2019-05-06 20:08:41C++输出保留两位有效数字和保留小数点后两位 #include <iomanip> //保留小数点后2位 cout << setiosflags(ios::fixed) << setprecision(2) << val << endl; //保留2位有效数字 ... -
Sql 保留两位小数
2019-05-16 17:51:25使用 Round() 函数,如 Round(number,2) ,其中参数2表示保留两位有效数字,但是只负责四舍五入到两位小数,但是不负责截断 例如 ROUND(3.141591653, 2) 得到3.140000000; 使用 Convert(decimal(10,2),number) ... -
js将小数转为保留两位小数(保留0.00和不保留)
2017-10-18 16:31:19//保留2位小数,如:2,会在2后面补上00.即2.00function toDecimal2(x) { var f = Math.round(x * 100) / 100; var s = f.toString(); var rs = s.indexOf('.'); if (rs ) { rs = s.length; s += -
scala 保留小数
2017-06-15 10:55:20scala 保留小数 -
Win10 C盘 系统和保留 占用空间 非常大
2019-01-10 09:12:34Win10 C盘 系统和保留 占用空间 非常大 今天在写代码的时候,突然发现Redis起不来了,一看原因,是因为C盘空间不足。然后,我看了下C盘,发现。。。 一个叫系统和保留的东西,居然占了110G的空间。难怪Redis起不来。... -
R语言保留小数点后几位(末尾为0也保留)
2020-06-04 22:18:15比如保留小数点后四位的操作。 大家用的最多的代码应该就是使用 round() 函数进行保留,具体做法我们以一个数字为例:12.345678。我们想保留小数点后四位可以进行如下操作。 round 运行下述代码,即可得到我们想要... -
ip保留地址
2018-06-15 14:42:22127.X.X.X是保留地址,用做循环测试用的。B类:172.16.0.0---172.31.255.255是私有地址。169.254.X.X是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。c... -
JavaScript的关键字和保留字介绍
2019-05-03 18:56:02JavaScript一共有俩种特殊的单词集体们,分别是关键字、保留字。 它们是不可以用作变量命名和函数命名的。下面我们一起看一下都有哪些。 ECMAScript关键字: break case catch continue default delete do else ... -
c语言输出保留任意小数
2019-03-23 14:27:59printf()函数默认保留6位小数 printf("%.nlf",value); //表示保留n位小数 printf("%.*f",n,value); // n表示小数的位数,value表示结果 printf("%m.nlf",value); //表示控制宽度为m,保留n为小数,靠右对齐 ... -
保留IP地址
2017-07-25 10:03:20关于保留IP 下面是从维基百科上摘录的保留IP地址段,共计16个(最后两个段一般会合并,也可以认为是15个)。 原文地址:https://en.wikipedia.org/wiki/Reserved_IP_addresses 保留地址段 地址... -
Linux yum 保留安装包
2017-05-15 11:11:43文章来源:Linux之保留yum安装软件后的RPM包 yum安装软件很方便,但是下载下来的rpm包在安装后默认会被删除掉: 如果希望保留yum安装的软件包该如何做呢? 设置方法: 将/etc/yum.conf里对应的keepcache参数改... -
【mysql】mysql删除重复记录并且只保留一条
2018-09-03 21:10:13最近在做题库系统,由于在题库中添加了重复的试题,所以需要查询出重复的试题,并且删除掉重复的试题只保留其中1条,以保证考试的时候抽不到重复的题。 首先写了一个小的例子: 一、单个字段的操作 这是... -
JavaScript保留关键字
2017-08-07 17:02:33Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用。 abstract arguments boolean break byte case catch char class* const -
Oracle基础之保留字和关键字
2020-01-11 17:13:56在Oracle之中,有分为保留字和关键字,所谓关键字就是Oracle中有实际意义的,而保留字(比如DESC、ORDER等等)是Oracle中不能随便使用的,比如不能随便用来做表的列名,当然关键字(比如KEY等等)也是不推荐的,不过使用... -
python保留字
2018-07-21 15:11:33此篇转自微博:遂越净郝的Python保留字详解 python的保留字总览 1.False if q=False:#Flase 2.None 表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义... -
Python四舍五入与保留小数位数(精确舍入与保留)
2020-03-22 16:53:28本文深入讲解Python3中 四舍五入、 截断保留 与 保留小数位数、取整,帮助Python初学者排坑! 总结不易,转载请标明出处! 文章目录0. 前言(吐槽)1. 四舍五入(精确)1.1 四舍五入并保留x位小数——用decimal模块中... -
js设置table保留n位小数(默认保留两位)
2017-12-23 11:48:41保留n位小数小数(默认保留两位小数) -
python——保留字
2018-03-24 15:35:48Python中的标识符是用于识别变量、函数、类、模块以及其他对象的名字,标识符可以包含字母、数字及下划线(_),但是必须以一个非数字字符开始。字母仅仅包括ISO-Latin字符集中的A–Z...下面的表列出了所有的保留字符... -
Java除法运算(保留小数)
2018-04-17 14:29:03编程的人都知道,java中的“/”、“%”运算,其中前者为取整,... * TODO 除法运算,保留小数 * @author 袁忠明 * @date 2018-4-17下午2:24:48 * @param a 被除数 * @param b 除数 * @return 商 */ pu...