一.小数点后取2位(四舍五入)的方法
方法一:round()函数
其实这个方法不推荐大家使用,查询资料发现里面的坑其实很多,python2和python3里面的坑还不太一样,在此简单描述一下python3对应的坑的情况。

a = 1.23456
b = 2.355
c = 3.5
d = 2.5
print(round(a, 3))
print(round(b, 2))
print(round(c))
print(round(d))

结果:

1.235 # 1.23456最终向前进位了
2.35 # 2.355居然没进位
4 # 最终3.5居然变为4了
2 # 最终2.5取值变为2

(1)通过上面的函数,看着是不是很晕,感觉round(x,n)函数是否进位也没看出是啥规律
(2)round(x,n)函数中,是否进位或四舍五入,取决于n位以及n+1位小数的值
(3)只有当n+1位数字是5的时候,容易混淆,如果n为偶数,则n+1位数是5,则进位,例如round(1.23456,3)最终变为1.235
(4)如果n为奇数,则n+1位是数5,那不进位,例如round(2.355,2),最终为2.35
(5)如果n为0,即没有填写n的时候,最终结果与上面相反,即整数部分为偶数的时候,小数位5不进位,例如(round(2.5)变为2)。
(6)整数部分为奇数的时候,小数位5进位。(round(3.5)变为4)
看完如上的部分,感觉是不是更晕了,所以round()不推荐使用,目前也不知道设计这个函数的目的在哪里?有谁知道麻烦告知一下?

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

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

结果:

1.2346
1.235
1.23

(1)这个方法是最常规的方法,方便实用,居家旅行必备!
方法三: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)
9
结果:

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://blog.csdn.net/i_chaoren/article/details/77922939

方法一:
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))

python中小数点后取2位(四舍五入)以及取2位(四舍五不入)的更多相关文章

  1. PHP小数点后保留位数并四舍五入

    ceil() 函数向上舍入为最接近的整数,进一(k>0).ceil(0.60) --> 1ceil(0.40) --> 1ceil(5) --> 5ceil(5.1) --&g ...

  2. c++ 取整:四舍五入 向上取整 向下取整

    对于数据的取整是经常需要考虑的 现在总结如下 #include<iostream> #include<cmath> using namespace std; int main( ...

  3. js除法四舍五入保留小数点后两位写法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  4. js取float型小数点后x位数的方法

    js中取小数点后两位方法最常用的就是四舍五入函数了,前面我介绍过js中四舍五入一此常用函数,这里正好用上,下面我们一起来看取float型小数点后两位一些方法总结 以下我们将为大家介绍 JavaScri ...

  5. 实现js保留小数点后N位的代码

    在JS中,一般实现保留小数点后N位的话,都是利用toFixed函数 <script language="javascript"> document.write(&quo ...

  6. js取float型小数点后两位数的方法

    四舍五入以下处理结果会四舍五入:' var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45   不四舍五入以下处理结果不会四舍五入:第一种, ...

  7. js保留小数点后N位的方法介绍

    js保留小数点后N位的方法介绍 利用toFixed函数 代码如下 复制代码 <script language="javascript"> document.write( ...

  8. js取小数点后两位数的方法

    四舍五入以下处理结果会四舍五入:toFixed( ) var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45 不四舍五入以下处理结果不会四舍 ...

  9. js(javascript)取float型小数点后两位数的方法

    以下我们将为大家介绍 JavaScript 保留两位小数的实现方法:四舍五入以下处理结果会四舍五入: ? 1 2 var num =2.446242342; num = num.toFixed(2); ...

随机推荐

  1. Nginx.conf 配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户user www-data;    #启动进程,通常设置成和cpu的数量相等worker_process ...

  2. Java多线程详解(三)

    1)死锁 两个线程相互等待对方释放同步监视器时会出现死锁的现象,这时所有的线程都处于阻塞状态,程序无法继续向下执行. 如下就是会出现死锁的程序. 首先flag = 1,线程d1开始执行,锁住对象o1, ...

  3. JavaWeb温习之HttpServletResponse对象

    以下内容均根据"方立勋JavaWeb视频教程"进行总结 1. HttpServletResponse常见应用——设置响应头控制浏览器的行为 1.1 设置http响应头控制浏览器禁止 ...

  4. linux下有趣的几个命令

    1.时常我们将频繁使用的‘ls’命令打成‘sl’,那就使用一下sl这个命令吧.在我们敲错的时候,肯定会会心一笑. 安装: yum install sl -y 或 apt-get install sl ...

  5. mysql优化之explain备忘笔记

    今天使用explain来查看sql执行情况的时候发现有的东西忘掉了,故作此篇文章来强化此知识点的记忆. 1.explain作用 exlain 执行结果显示了mysql 存储引擎如何使用索引来处理sel ...

  6. 【BZOJ1054】[HAOI2008]移动玩具 BFS

    [BZOJ1054][HAOI2008]移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个 ...

  7. vue 引入通用 css

    1.在入口 js 文件 main.js 中引入,一些公共的样式文件,可以在这里引入. import Vue from 'vue' import App from './App' // 引入App这个组 ...

  8. linux 统计文件数量

    查找当前目录下compose文件的数量 ls -lr | grep "compose" | wc -l

  9. Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载地址

    MSDN于2011年5月12日,最新发布简体中文Windows 7 Ultimate 旗舰版 SP1 DVD镜像安装包,分32位和64位两个版本.最新发行代号分别是:677486(32位),67740 ...

  10. Oracle 11gR2 RAC监听器原理介绍

    一.基本概念 oracle11gR2 RAC开始引入scan概念,一般通过dns服务器或gns服务器解析scan,也可以使用/etc/hosts文件解析scan,只不过oracle官方不建议这样做,h ...