开始之前需要注意一点是:精度值为数字的总位数,如: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模块 --数字的精度、保留小数位数、取整问题的更多相关文章

  1. js取整,保留小数位数、四舍五入、科学记数法及去掉数字末尾多余的0

    1.向下取整 var num1 = 12.10345; var num2 =12.9801; var newnum1=Math.floor(num1)     //结果 12 var newnum2= ...

  2. 总结C#保留小数位数及百分号处理

    方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...

  3. C#保留小数位数

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); prov ...

  4. C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现

      在C#中大家都会遇到这种情况 double类型的数据,需要格式化(保留N未有效数字)或者是保留N为小数等情况,我们往往采取double.tostring("参数");的方法.下 ...

  5. C#保留小数位数的方法

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provi ...

  6. 总结C#保留小数位数

    2.C#保留小数位N位,四舍五入 . decimal d= decimal.Round(decimal.Parse("0.55555"),2); 3.C#保留小数位N位四舍五入 M ...

  7. Javascript-数值运算 保留小数点位数,并对最后一位小数各种取整方法

    今天遇到Javascript数值运算的坑,说到底,还是用得少啊.得多用多敲代码多遇坑. 先介绍以下三个Javascript number取整运算方法. Math.floor() 对一个数退一取整 例: ...

  8. java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])

    package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...

  9. Java指定保留小数位数的方法

    package com.qiyuan.util; import java.math.BigDecimal; import java.math.RoundingMode; import java.tex ...

随机推荐

  1. sql 将英文句子中的单词首字母转换为大写

    create function dbo.pTitleCase(@StrIn nvarchar(max))returns nvarchar(max)as begin; declare @StrOut n ...

  2. 一种无法被Dump的jar包加密保护解决方案

    作者: 我是小三 博客: http://www.cnblogs.com/2014asm/ 由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: windwos10.I ...

  3. Centos安装MySQL5.6并重置密码

    数据库配置 如果用的是自带的sqllite那么数据库就可以不动 安装MySQL5.6数据库 这里强烈建议用使用5.6, 5.7版本的数据库遇见了很多BUG 安装MySQL wget http://de ...

  4. (十四)Linux kernel mmc 框架说明,包括mmc_test使用方法

    1.Linux 总线模型         Linux下的任何驱动在内核中最终都抽象为bus, driver以及device三者间的相互作用. 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有 ...

  5. javascript typeof instanceof

    typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果: number,boolean,string,function(函数),object(NULL,数组,对象),und ...

  6. linux下top命令的使用

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 视图参数含义 top视图分为两部分:操作系统资源概况信息和进程信息.首先分析资源 ...

  7. 使用html2canvas在手机端独立实现h5页面转图片

    需求 方便用户把每日消息的海报图片分享到微信朋友圈进行消息扩散 实现方案 使用html2canvas 插件,html2canvas 1.0.0-alpha.11 ,github地址:https://g ...

  8. python内置函数(二)之filter,map,sorted

    filter filter()函数接收一个函数 f 和一个iterable的对象,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条 ...

  9. CF311B Cats Transport(斜率优化)

    题目描述 Zxr960115 是一个大农场主.他养了m只可爱的猫子,雇佣了p个铲屎官.这里有一条又直又长的道路穿过了农场,有n个山丘坐落在道路周围,编号自左往右从1到n.山丘i与山丘i-1的距离是Di ...

  10. qt 启动参数 -qws

    运行嵌入式程序 在嵌入式QT版本中,程序需要服务器或自己作为服务器程序. 服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象.或者使用-qws ...