python(62):保留两位小数

转载:https://blog.youkuaiyun.com/jiandanjinxin/article/details/77752297

在C/C++语言对于整形数执行除法会进行地板除(舍去小数部分)。

例如 int a=15/10; a的结果为1。

同样的在Java中也是如此,所以两个int型的数据相除需要返回一个浮点型数据的时候就需要强制类型转换,例如 float a = (float)b/c ,其中b、c都是int型数据。

Python中分为3种除法:传统除法、精确除法、地板除。

传统除法

如果是整数除法则执行地板除,如果是浮点数除法则执行精确除法

  >>>1/2  
    0  
  >>>1.0/2.0  
    0.5  

精确除法

除法总是会返回真实的商,不管操作数是整形还是浮点型。

执行from future import division 指令就可以做到这一点。

# -*- coding: UTF-8 -*-
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
>>>1/2
0.5
>>>1.0/2.0
0.5

地板除

从Python2.2开始,增加了一个操作符 // ,以执行地板除://除法不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字。

>>>1//2 
0 
>>>1.0//2 
0 
>>>-1//2.0
-1 

内建函数divmod()

divmod (a,b),返回(a//b,a%b) 

>>>divmod(1,2)  
(0,1)  
>>>divmod(3.14159,1.5)  
(2.0,0.4159000000000002)  
>>>5+6j//3+2j  
2+0j  
>>>5+6j%3+2j  
-1+2j  
>>>divmod(5+6j,3+2j)  
((2+0j),(-1+2j))  

保留两位小数

In [1]: a = 5.026

In [2]: b = 5.000

In [3]: round(a,2)
Out[3]: 5.03

In [4]: round(b,2)
Out[4]: 5.0

In [5]: '%.2f' % a
Out[5]: '5.03'

In [6]: '%.2f' % b
Out[6]: '5.00'

In [7]: float('%.2f' % a)
Out[7]: 5.03

In [8]: float('%.2f' % b)
Out[8]: 5.0

In [9]: from decimal import Decimal

In [10]: Decimal('5.026').quantize(Decimal('0.00'))
Out[10]: Decimal('5.03')

In [11]: Decimal('5.000').quantize(Decimal('0.00'))
Out[11]: Decimal('5.00')

当需要输出的结果要求有两位小数的时候,字符串形式的:’%.2f’ % a 方式最好,其次用Decimal

round(a,2)
'%.2f' % a
Decimal('5.000').quantize(Decimal('0.00'))
a = 1
b = 3
print(a/b)
#方法一:
print(round(a/b,2))
#方法二:
print(format(float(a)/float(b),'.2f'))
#方法三:
print ('%.2f' %(a/b))

### Python保留两位小数的方法 在 Python 中有多种方式可以实现数值保留两位小数的功能。以下是几种常见的方法及其特点: #### 方法一:使用 `round()` 函数 `round()` 是一种简单的方式用于处理浮点数的小数数。然而需要注意的是,该函数的行为可能不符合传统的四舍五入逻辑[^4]。例如: ```python x = 3.14159265 result = round(x, 2) # 结果为 3.14 print(result) ``` #### 方法二:使用字符串格式化 通过 `{:.2f}` 的格式化语法可以直接将浮点数转换成带有两位小数的形式。这种方式适用于需要展示而非进一步计算的情况[^3]。 ```python x = 3.14159265 formatted_x = "{:.2f}".format(x) # 字符串形式 '3.14' print(formatted_x) ``` #### 方法三:使用 `%` 运算符进行格式化 类似于 C 风格的格式化操作也可以达到同样的效果。此方法同样返回一个字符串类型的值[^3]。 ```python x = 3.14159265 formatted_x = "%.2f" % x # 字符串形式 '3.14' print(formatted_x) ``` #### 方法四:利用 `decimal.Decimal` 类 当需要严格控制精度时,推荐使用 `decimal` 模块中的 `Decimal` 类型。它可以避免因浮点运算带来的误差,并允许指定截断规则而不执行四舍五入[^1]。 ```python from decimal import Decimal a = 12.345 rounded_a = Decimal(a).quantize(Decimal("0.00")) # 不做四舍五入,结果为 Decimal('12.34') print(rounded_a) ``` #### 方法五:借助正则表达式提取特定模式的数据 对于某些特殊场景下只需要获取满足条件的部分数据而不是修改原始数据本身时,可采用正则表达式的手段来完成筛选工作[^5]。 ```python import re data = "The value is approximately 12.34 and another one is 56.78" matches = re.findall(r"\d+\.\d{2}", data) # 提取形如 xx.xx 格式的部分 ['12.34', '56.78'] print(matches) ``` 以上就是关于 Python 如何保留两位小数的一些常见解决办法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值