有效数字修约,按四舍六入五成双原则
# 定义函数修约小数位数,按四舍六入五成双的原则
def Little (x,y): # x是要修约的数,y是要保留的小数位数。ABS_x = abs(x) # 取x的绝对值str_x = str(ABS_x) # 字符串x的绝对值len_x = len(str_x) # 计算x字符串的长度Point_x = str_x.find('.') # 寻找x字符串中的小数点if Point_x == -1: # 如果要修约的数是整数,格式化输出,自动补零Result = '%' + '.' + str(y) + 'f'print(x, '修约有效数字为:', Result % x)else: # 如果要修约的数是浮点数Index_point = str_x.index('.') # 找到小数点所在的引索位置x1 = int(ABS_x * 10 ** y) # 整数化输出x绝对值*10的y次方bb = len_x - (Index_point+1) - (y+1)# 用于判断x的小数位数是否与需要保留的小数位数一致,避免二进制计算问题# 如:print(10.05*100-int(10.05*10)*10) 输出结果为: 5.000000000000114,而不是 5if bb == 0:x2 = int(ABS_x*10**(y+1)) - x1*10else:x2 = ABS_x*10**(y+1) - x1*10 # 提取需要修约的数字,判断四舍六入五成双if x2 < 5:Num = x1if x2 > 5:Num = x1 + 1if x2 == 5:if x1 % 2 == 0:Num = x1else:Num = x1 + 1ABS_Result = Num/10**yResult ='%'+'.'+str(y)+'f' #格式化输出自动补零if x>=0:print(x, '修约有效数字为:', Result % ABS_Result)else:print(x, '修约有效数字为:', Result % -ABS_Result)# 定义函数,修约数值的有效数字
def Significant (w,v):# w是要修约的数字,v是需要保留的有效数字个数abs_w = abs(w)str_w = str(abs_w)len_w = len(str_w) # 计算x字符串的长度Point_w = str_w.find('.') # 寻找x字符串中的小数点if Point_w == -1: # 如果要修约的数是整数,格式化输出,自动补零Result = '%' + '.' + str(v-len_w) + 'f'print(w, '修约有效数字为:', Result % w)else:if abs_w >= 1: # 如果要修约的数是大于1的浮点数index_point = str_w.index('.') # 确定小数点所在位置v = v - index_point # 确定要取的小数位数Little(w,v) # 按四舍六入五成双的原则修约if abs_w < 1: # 如果要修约的数是小于1的浮点数,判断小数点后面有多少个零len_w = len(str_w)n = len_w - 2 # 计算要修约的数字的小数位数w1 = int(abs_w*10**n) # 把小数变整数len_w1 = len(str(w1)) # 计算不为零的数的长度v = v + (n - len_w1) # 反推前面有多少个零,然后确定实际要取的小数位数Little(w,v)Significant(-10,3) # 输出 -10.0
Significant(-10.05,3) # 输出 -10.0
Significant(-0.550,1) # 输出 -0.6
Significant(0.0055,1) # 输出 0.006
有效数字修约,按四舍六入五成双原则相关推荐
- 小数位数修约,四舍六入五成双
# 定义函数修约小数位数,按四舍六入五成双的原则 def Little (x,y): # x是要修约的数,y是要保留的小数位数.ABS_x = abs(x) # 取x的绝对值str_x = str(A ...
- excel数据修约(四舍六入五成双)
1.什么是四舍六入五成双 这里"四"是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有非0数时,舍5入1:当 ...
- 四舍六入五成双并保留一位有效位-数据修约
C# /// <summary>/// 数据修约 -- 四舍六入5成双,至少保留一位有效位/// 数值0.00512,保留2位,修约为0.01/// </summary>/// ...
- java 四舍六入五成双_EXCEL实现四舍六入五成双修约规则的方法
中国药典的修约原则是四舍六入五成双(只是中国药典这样,USP.EP都是四舍五入).四舍六入五成双的修约原则为: 1. 被修约的数字小于5时,该数字舍去: 2. 被修约的数字大于5时,则进位: 3. 被 ...
- 保留三位有效数字,四舍六入五成双
举例: 输入:1234 输出:1234 1234.3 1234 12 12.0 4 4.00 1.3 1.30 1.235 ...
- 实现保留3位有效数字(四舍六入五成双规则)
目录 实现保留3位有效数字(四舍六入五成双规则) 1.程序简介 输出样例 2.程序代码 3.运行结果 实现保留3位有效数字(四舍六入五成双规则) 1.程序简介 输出样例 输入:输出: 1234 123 ...
- python-实现保留3位有效数字(四舍六入五成双规则)
项目场景: 实现保留3位有效数字(四舍六入五成双规则) 问题描述 输入:输出: 1234 1234 12 12.0 4 4.00 0.2 0.200 0.32 0.320 1.3 1.30 1.235 ...
- sqlserver varchar 对于 sum 运算符无效_在sqlserver上实现自定义函数四舍六入五成双...
做过统计都知道关于保留几位小数有好几种方法,其中4舍6入5凑偶用的比较多,所以我就是sqlserver里面实现了一个自定义函数 定义 对于位数很多的近似数,当位数确定后,其后面多余的数字应该舍去,只保 ...
- java 四舍六入五成双_【数据小常识】“四舍六入五成双”
"四舍六入五成双"规则如下: "四舍六入五成双",也即"4舍6入5凑偶",这里"四"是指≤4 时舍去,"六&q ...
最新文章
- windows10安装docker
- 前沿速递:Maven中央仓库新增依赖漏洞提醒功能
- css3之border-image
- Angular里的消息(Message)显示
- 缠绕多年的PCIE通道数问题终于完全明白了,欢迎指正
- EF批量插入太慢?那是你的姿势不对
- Preparing Cities for Robot Cars【城市准备迎接自动驾驶汽车】
- arp 命令详解(安装、arp欺骗防御)
- postgresql与mysql语法区别
- linux运维工作内容及岗位要求
- linux按照目录大小降序排列,Linux du命令查看文件夹大小并按降序排列
- A3Mall 电商平台——测试计划评审
- 【unity】暂停,继续游戏,重新开始,退出
- 计算机三号字在哪个页面,Word用楷体三号一页大约多少字?
- 半导体芯片为什么一定要用硅?
- echarts的基本使用及其插件下载
- iTop-4412_开发板Linux编程之TFTP服务器学习笔记
- Web 3.0 中常见的网络钓鱼攻击
- 红米note4x线刷miui9国际版开发版
- 单片机io口定义C语言,怎样把单片机的8个不同管脚定义成同一个IO口??
热门文章
- 某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: 1)A和B两人中至少去一人; 2)A和D不能一起去; 3)A、E和F三人中要派两人去; 4)B和
- 超赞!世界10个著名悖论的最终解答来了!
- 如何实现算法中的公平性
- 树莓派4+lede+移远5G模组RM500Q
- android购票日历,2017春运购票日历
- 解线性方程组迭代法之Guass-Seidel迭代法及其算法实现
- 微信搜索引擎中索引的分布式演进
- java 可重复map_map的键值可以重复吗
- nginx平台初探(100%)
- 微信公众号实现“一键关注”功能