decimal模块 --数字的精度、保留小数位数、取整问题
开始之前需要注意一点是:精度值为数字的总位数,如:1.23, 精度值为3; 0.123,精度值也为3
1、更改默认精度值后,直接进行计算即可保留对应精度值
from decimal import getcontext,Decimal getcontext().prec = 3 #设置精度值为3 f = 12.23435521 #type(f) : float
value = Decimal(str(f)) #value: Decimal('12.23435521')
#或:value = Decimal.from_float(f)
print value*1 #Decimal('12.2') value = Decimal(1)/Decimal(3)
print value #Decimal('0.333')
2、小数保留位数问题
from decimal import getcontext,Decimal f = 12.23435521 #type(f) : float
value = Decimal(repr(f)).quantize(Decimal('0.000')) #保留3位小数,这里需要注意:在数字的精度值允许的范围内
print value #12.234
3、取整问题
需要记住几个参数:
ROUND_CEILING 总是趋向无穷大向上取整
ROUND_DOWN 总是趋向0取整
ROUND_FLOOR 总是趋向负无穷大向下取整
ROUND_HALF_DOWN 如果最后一个有效数字大于或等于5则朝0反方向取整;否则,趋向0取整
ROUND_HALF_EVEN 类似于ROUND_HALF_DOWN,不过,如果最后一个有效数字值为5,则会检查前一位。偶数值会导致结果向下取整,奇数值导致结果向上取整
ROUND_HALF_UP 类似于ROUND_HALF_DOWN,不过如果最后一位有效数字为5,值会朝0的反方向取整
ROUND_UP 朝0的反方向取整
ROUND_05UP 如果最后一位是0或5,则朝0的反方向取整;否则向0取整
写一个例子:
import decimal
from decimal import getcontext,Decimal getcontext().prec = 1
getcontext().rounding = getattr(decimal, 'ROUND_CEILING') value = Decimal(1)/Decimal(8)
print value # Decimal('0.2')
decimal模块 --数字的精度、保留小数位数、取整问题的更多相关文章
- js取整,保留小数位数、四舍五入、科学记数法及去掉数字末尾多余的0
1.向下取整 var num1 = 12.10345; var num2 =12.9801; var newnum1=Math.floor(num1) //结果 12 var newnum2= ...
- 总结C#保留小数位数及百分号处理
方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...
- C#保留小数位数
1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); prov ...
- C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现
在C#中大家都会遇到这种情况 double类型的数据,需要格式化(保留N未有效数字)或者是保留N为小数等情况,我们往往采取double.tostring("参数");的方法.下 ...
- C#保留小数位数的方法
1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provi ...
- 总结C#保留小数位数
2.C#保留小数位N位,四舍五入 . decimal d= decimal.Round(decimal.Parse("0.55555"),2); 3.C#保留小数位N位四舍五入 M ...
- Javascript-数值运算 保留小数点位数,并对最后一位小数各种取整方法
今天遇到Javascript数值运算的坑,说到底,还是用得少啊.得多用多敲代码多遇坑. 先介绍以下三个Javascript number取整运算方法. Math.floor() 对一个数退一取整 例: ...
- java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])
package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...
- Java指定保留小数位数的方法
package com.qiyuan.util; import java.math.BigDecimal; import java.math.RoundingMode; import java.tex ...
随机推荐
- Java 使用流读文本数据时乱码 解决方法
一.问题描述 当我使用FileReader读取文本文件里的汉字时,读出来的是乱码.但为什么字符是正常的呢??? 二.原因探究 其根本原因在于编码标准不同.汉字采用gbk,而idea使用UTF-8.gb ...
- case when语法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数: CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- C++ STL 之 map
#include <iostream> #include <map> using namespace std; // map构造函数 // map<T1, T2> ...
- MySQL间隙锁问题
间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记录之前或最后一个索引之后的空间. 最近用户反馈说系统老是出现insert时,等待超时了,最后发现是ins ...
- jQuery EasyUI简介
jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件. jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助we ...
- vs code 开发小程序会用到的插件
主要介绍一下几个vscode插件,在vscode中搜索插件关键字点击安装即可. 1) vscode weapp api, 语法结构api; 2) minapp-vscode 3) vscode wx ...
- python多继承下的查找顺序-MRO原则演变与C3算法
在python历史版本中的演变史 python2.2之前: MRO原则: 只有经典类,遵循深度优先(从左到右)原则, 存在的问题:在有重叠的多继承中,违背重写可用原则 解决办法是再设计类的时候不要设计 ...
- 二十,基于K8S集群的PaaS简介
目录 一.概述 二.生产环境部署k8s,接下来我们描述一下在真正生产环境中我们部署k8s应该部署成什么样子 一.概述 1.通过以往的学习应该可以了解到k8s 和以往提到的devops概念更容易落地了. ...
- Ubuntu打开系统监视器查看进程&资源等信息
Ubuntu打开系统监视器查看进程&资源等信息 类似于Windows的任务管理器,Ubuntu也提供了系统监视器供用户管理进程及查看系统占用资源等 打开方式,终端输入如下命令: gnome-s ...
- Java抽象类 详解
一.抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容.而抽象类是指在普通类的结构里面增加抽象方法的组成 ...