今天写程序的时候碰到了一个问题关于如何控制浮点数只显示小数点后两位,正常的想法是用round函数,例如 round(a, 2),但是在面对下面的问题时候round就不太好用了

>>> a=13.949999999999999

>>> round(a, 2)

13.949999999999999

上网查了资料,有网友提供了一种方法

>>> print "%.2f" % a 13.95

还可以使用decimal

decimal.Decimal类型是Python中满足高精度计算的一种数据类型,使用进需要导入decimal包

定义Decimal数据类型:

1 无法使用赋字面值的方式定义

2 定义方式如下:

>>> import decimal >>> x = decimal.Decimal(87345) >>> x Decimal(‘87345’) >>> x = decimal.Decimal(‘123.3344332566334’) >>> x Decimal(‘123.3344332566334’) 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确

如果需要从浮点数据转换为Decimal类型,可能使用如下方法

>>> x = decimal.Decimal.from_float(127.3323)

>>> x

Decimal(‘127.332300000000003592504072003066539764404296875’)

适用于整型操作同样适用于Decimal类型

I have 3 questions pertaining to decimal arithmetic in Python, all 3 of which are best asked inline:

1)

>>>fromdecimalimportgetcontext,Decimal>>>getcontext().prec=6>>>Decimal('50.567898491579878')*1Decimal('50.5679')>>># How is this a precision of 6? If the decimal counts whole numbers as>>># part of the precision, is that actually still precision?>>>

and

2)

>>>fromdecimalimportgetcontext,Decimal>>>getcontext().prec=6>>>Decimal('50.567898491579878')Decimal('50.567898491579878')>>># Shouldn't that have been rounded to 6 digits on instantiation?>>>Decimal('50.567898491579878')*1Decimal('50.5679')>>># Instead, it only follows my precision setting set when operated on.>>>

3)

>>># Now I want to save the value to my database as a "total" with 2 places.>>>fromdecimalimportDecimal>>># Is the following the correct way to get the value into 2 decimal places,>>># or is there a "better" way?>>>x=Decimal('50.5679').quantize(Decimal('0.00'))>>>x# Just wanted to see what the value wasDecimal('50.57')>>>foo_save_value_to_db(x)>>>

本机测试用例:

>>> import decimal

>>> x = decimal.Decimal(87345)

>>> x

Decimal('87345')

>>> print x

87345

>>> from decimal import getcontext, Decimal

>>> x = Decimal('0.998531571219').quantize(Decimal('0.00'))

>>> x

Decimal('1.00')

>>> print x

1.00

>>> x = Decimal('0.998531571219').quantize(Decimal('0.0000'))

>>> x

Decimal('0.9985')

>>> print x

0.9985

>>> y = Decimal.from_float(0.998531571219)

>>> y

Decimal('0.99853157121900004700165709436987526714801788330078125')

>>> y = Decimal.from_float(0.998531571219).quantize(Decimal('0.0000'))

>>> y

Decimal('0.9985')

>>> print y

0.9985

>>> f1 = 0.998531571219

>>> f1

0.998531571219

>>> type(f1)

>>> f2 = str(f1)

>>> f2

'0.998531571219'

>>> type(f2)

>>>

python浮点数保留两位小数_python中保留两位小数相关推荐

  1. python浮点数保留两位小数_python中保留两位小数怎么表示

    这里有三种方法, round(a,2) '%.2f' % a Decimal('5.000').quantize(Decimal('0.00')) 当需要输出的结果要求有两位小数的时候,字符串形式的: ...

  2. python怎么保留两位小数_python中保留两位小数怎么表示

    这里有三种方法, round(a,2) '%.2f' % a Decimal('5.000').quantize(Decimal('0.00')) 当需要输出的结果要求有两位小数的时候,字符串形式的: ...

  3. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  4. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  5. 如何在64位的Linux中运行32位的应用程序

    大部分Linux发行套件都有针对x86_64处理器的版本.比较典型的x86_64的处理器有ADM Athlon II和英特尔Xeon.因为这些Linux发行套件都有自己专用的软件源,这些软件源会为提供 ...

  6. java 防并发_并发:如何防止两个不同类中的两个方法同时运行?

    我有一个用例,我必须防止两个不同的类中的两个不同的方法同时运行,即如果类A有方法X而类B有方法Y,我必须确保当methodX被执行时,我在methodX完成之前,不应允许方法Y执行或阻止执行 . cl ...

  7. python浮点数保留两位小数_python float保留两位小数

    原博文 2020-04-10 14:38 − res = 1.015 res = round(res, 2) # 保留两位小数,1.01 ... 0 12622 相关推荐 2019-08-10 10: ...

  8. python除法保留小数_python中的除法_python中除法_python 除法_python 除法保留小数

    首先要说的是python中的除法运算,在python 2.5版本中存在两种除法运算,即所谓的true除法和floor除法.当使用x/y形式进行除法运算时,如果x和y都是整形,那么运算的会对结果进行截 ...

  9. python round保留小数位_Python 中保留指定位数小数用round就可以了吗?

    Python 中保留指定位数小数用round就可以了吗? Python 中保留指定位数小数用round就可以了吗? 在项目实践中,程序员经常会收到产品经理保留指定位数小数的需求. 在Python语言中 ...

最新文章

  1. (节点分类)四大图数据集AIFB,MUTAG,BGS,AM数据集获取
  2. C# Winform程序中DataGridView中使用ContextMenuStrip实现右键菜单
  3. TNN API说明文档
  4. electron增加导航按钮_Electron发布6.0 Released版本
  5. np.random的随机数函数
  6. windows7中安装jdk1.8
  7. 模糊综合评价法及Python实现
  8. phpQuery - PHP 处理 HTML DOM 的好帮手
  9. Kubernetes (K8s)安装部署过程(一)之证书安装
  10. S-MAC协议的相关知识
  11. smb协议讲解_SMB协议详解 - 人之为学,如饮河海,大饮则大盈,小饮则小盈 - OSCHINA - 中文开源技术交流社区...
  12. 计算机网络中的广播啥意思,卫星IP数据广播是什么意思?
  13. 伦敦国王学院计算机读研要求,伦敦国王学院高级计算机理学硕士
  14. 永恒之蓝实验 MS17-010
  15. 【云和恩墨大讲堂】彭文元 - 中间件BES连接池的配置和问题诊断方法
  16. 入门 | 走近流行强化学习算法:最优Q-Learning
  17. 关于Sunday算法以及实现
  18. Day1作业2:多层菜单查询
  19. Xshell安装Docker并安装mysql5.7
  20. Mybatis中的_parameter

热门文章

  1. HDU5709 Claris Loves Painting
  2. openlayers 移动地图中心点
  3. 或许它,可以帮你彻底掌握 Go 设计模式
  4. firefox 42 linux,Mozilla Firefox 42.0 Beta 7 发布下载
  5. 办公室计算机布局方案,办公室规划和布置的方案.pdf
  6. 年底获奖人太多?奖状可以用Smartbi电子表格这么做!
  7. ADB 端口伪占用解决(adb自己占用自己)
  8. 利用python+百度AI搞定一个文字识别功能同时转换成语音
  9. 设计模式(三)创建型模式-工厂模式
  10. Windows下修改redis端口号的方法及修改后redis的两种启动方式