python中小数点后取2位(四舍五入)及取2位(四舍五不入)的方法

 更新时间:2023年08月31日 10:05:38   作者:hello-alien  
这篇文章主要给大家介绍了python中小数点后取2位(四舍五入)及取2位(四舍五不入)的方法,在Python中取两位小数的方法其实非常简单,需要的朋友可以参考下

一.小数点后取2位(四舍五入)的方法

方法一:round()函数

1.首先不推荐使用这个函数、python2和python3对应的效果还不太一样,使用的时候慎重!

2.也感谢评论区网友的提示,有人说具体用法是**四舍六入五成双**。但是发现也不太对,还是有坑的,各位看官请看?

3.欢迎各位来补充?

四舍六入五成双, 四舍六入五凑偶的意思, 根据百度词条的解释如下:

  • (1)当精确位后面一位的数字是1-4的时候,舍去
  • (2)当精确位后面一位的数字是6-9的时候,进1位
  • (3)当精确位后面一位的数字是5的,此时需要看这个5后面是否还有值。如果5后面有值(0忽略),则直接进位;
  • (4)如果5后面没值或值为0,则需要判断5前面的值是偶数还是奇数。
  • (5)如果5前面是偶数,不进位;如果是奇数,进位。
  • 为了方便大家的理解,各种情况都测试一下。默认都是按照:小数点后2位有效数字取值
  • 小数点第二位就是精确位,小数点后第三位就是我们重点关注的位数
# (1)、(2)规则
a = 1.45321
b = 2.45678
print(round(a, 2))
print(round(b, 2))

# 打印内容
1.45
2.46

# (3)规则
a = 1.12500002
b = 2.15500002
c = 2.15500000
print(round(a, 2))
print(round(b, 2))
print(round(c, 2))

# 打印内容
1.13
2.16
2.15

小数点后第三位是我们重点关注的,而第三位后面还有值,那直接进位。上面案例中2.155后面的几个0,都忽略。

# (4)、(5)规则
print(round(1.205, 2))
print(round(1.215, 2))
print(round(1.225, 2))
print(round(1.235, 2))
print(round(1.245, 2))
print(round(1.255, 2))
print(round(1.265, 2))
print(round(1.275, 2))
print(round(1.285, 2))
print(round(1.295, 2))

# 打印内容
1.21    # 1.205---进位
1.22    # 1.215---进位
1.23    # 1.225---进位
1.24    # 1.235---进位
1.25    # 1.245---进位
1.25    # 1.255---未进位
1.26    # 1.265---未进位
1.27    # 1.275---未进位
1.28    # 1.285---未进位
1.29    # 1.295---未进位

通过以上打印结果发现, (4)、(5)规则根本就不适用上述情况。总结规律如下:

如果精确位后面的一位是5,且5后面没其他数值,此时精确位如果是0—4,则进位(5种情况)。如果是5–9则不进位(5种情况)。
我的理解是,不同语言、不同函数的处理都是细微的差别。但总归把进位和不进位的概率,都是平均分布的。

最终的规律总结如下:

  • (1)当精确位后面一位的数字是1-4的时候,舍去
  • (2)当精确位后面一位的数字是6-9的时候,进1位
  • (3)当精确位后面一位的数字是5的,此时需要看这个5后面是否还有值。如果5后面有值(0忽略),则直接进位;
  • (4)如果5后面没值或值为0,则需要判断精确位的区间,如果是0—4,则进位。如果是5–9,则不进位。

各位看官,不知道我解释的够清楚了吗?如果感觉还行,帮忙点个赞吧!!!

方法二:’%.2f’ %f 方法

f = 1.23456
print('%.4f' % f)
print('%.3f' % f)
print('%.2f' % f)

结果:

1.2346
1.235
1.23

  • (1)原本以为:这个方法是最常规的方法,方便实用,居家旅行必备!
  • (2)但是…
f = 0.625
print('%.2f' % f)
# 结果:0.62

具体是否进位,有个概率问题,感兴趣的朋友可以看看评论里面的信息。

方法三:Decimal()函数

from decimal import Decimal
aa = Decimal('5.026').quantize(Decimal('0.00'))
bb = Decimal('3.555').quantize(Decimal('0.00'))
cc = Decimal('3.545').quantize(Decimal('0.00'))
print(aa)
print(bb)
print(cc)

结果:

5.03
3.56
3.54

decimal这个模块在很少用,如上图中,3.555结果为3.56,而3.545结果变为3.54,一个5进位了,一个是5没进位,具体原因不详。
所以不推荐使用这个方法!!!

二.小数点后取2位(四舍五不入)的方法

通过计算的途径,很难将最终结果截取2位,我们直接想到的就是如果是字符串,直接截取就可以了。

例如

num = '1234567'		#字符串num
print(num[:3])
结果:
123

如果是123.456取2位小数(截取2位小数),值需要把小数点右边的当做字符串截取即可

partition()函数(将字符串根据字符串切割):

http://www.runoob.com/python/att-string-partition.html

num = '123.4567'
num_str = num.partition(".")
print(num_str)
结果:
('123', '.', '4567')   # 三个元素的元祖

拼接字符串:format()函数的使用
https://www.jb51.net/python/2968515r5.htm

方法一:

def get_two_float(f_str, n):
    a, b, c = f_str.partition('.')
    c = c[:n]
    return ".".join([a, c])
num = "123.4567"		#(1)隐患一,传入函数的是字符串
print(get_two_float(num, 2))
num2 = '123.4'			# (2)隐患二,如果传入的字符串小数位小于最终取的位数
print(get_two_float(num2, 2))

结果:

123.45
123.4

最终版本:

def get_two_float(f_str, n):
    f_str = str(f_str)      # f_str = '{}'.format(f_str) 也可以转换为字符串
    a, b, c = f_str.partition('.')
    c = (c+"0"*n)[:n]       # 如论传入的函数有几位小数,在字符串后面都添加n为小数0
    return ".".join([a, c])
num = 123.4567
print(get_two_float(num, 2))
num2 = 123.4
print(get_two_float(num2, 2))

结果:

123.45
123.40

总结

到此这篇关于python中小数点后取2位(四舍五入)及取2位(四舍五不入)的文章就介绍到这了,更多相关python小数点后取2位内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

    python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解

    这篇文章主要介绍了python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 用python爬取豆瓣前一百电影

    用python爬取豆瓣前一百电影

    大家好,本篇文章主要讲的是用python爬取豆瓣前一百电影,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 使用python测试prometheus的实现

    使用python测试prometheus的实现

    本文主要介绍了使用python测试prometheus的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • opencv之为图像添加边界的方法示例

    opencv之为图像添加边界的方法示例

    这篇文章主要介绍了opencv之为图像添加边界的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python利用Xpath选择器爬取京东网商品信息

    Python利用Xpath选择器爬取京东网商品信息

    这篇文章主要介绍了Python利用Xpath选择器爬取京东网商品信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 单链表反转python实现代码示例

    单链表反转python实现代码示例

    这篇文章主要介绍了单链表反转python实现,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python读写数据读写csv文件(pandas用法)

    python读写数据读写csv文件(pandas用法)

    这篇文章主要介绍了python读写数据读写csv文件(pandas用法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python matplotlib.pyplot.plot()参数用法

    python matplotlib.pyplot.plot()参数用法

    这篇文章主要介绍了python matplotlib.pyplot.plot()参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python3 shelve对象持久存储原理详解

    Python3 shelve对象持久存储原理详解

    这篇文章主要介绍了Python3 shelve对象持久存储原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python操作redis方法总结

    python操作redis方法总结

    本篇文章给大家总结了python操作redis的实际方法和实例代码,有兴趣的朋友参考学习下。
    2018-06-06

最新评论