python str转小数(按真实世界四舍五入保留任意小数位) 您所在的位置:网站首页 python将字符转换成数字 python str转小数(按真实世界四舍五入保留任意小数位)

python str转小数(按真实世界四舍五入保留任意小数位)

2023-10-14 09:07| 来源: 网络整理| 查看: 265

先入个门:

Python str转化成数字

int(x [,base ])         将x转换为一个整数    

long(x [,base ])        将x转换为一个长整数    

float(x )               将x转换到一个浮点数    

complex(real [,imag ])  创建一个复数    

str(x )                 将对象 x 转换为字符串    

repr(x )                将对象 x 转换为表达式字符串    

eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象    

tuple(s )               将序列 s 转换为一个元组    

list(s )                将序列 s 转换为一个列表    

chr(x )                 将一个整数转换为一个字符    

unichr(x )              将一个整数转换为Unicode字符    

ord(x )                 将一个字符转换为它的整数值    

hex(x )                 将一个整数转换为一个十六进制字符串    

oct(x )                 将一个整数转换为一个八进制字符串 

举个栗子:

小数点后取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) 结果:

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

a=1 a=("%.2f" % a)

print a #结果1.00

其中我遇到的问题是a是小数形式的字符串,然后不可以直接'%.xf'

x表示四舍五入保留多少位小数。其中a是数字类型才可。包括小数,整数。

但是我是字符串,我就先float转为小数,但是python转小数会出问题,所以先float后,在用方法二保留希望是位数,

就不会丢失精度了。

s1=(float(date[7])+float(date[8])+float(date[9])+float(date[10])) a1=("%.2f" % s1)

直接s1结果丢失精度,再进行一次方法二就四舍五入,符合现实的要求规律。

原文:https://blog.csdn.net/chenmozhe22/article/details/81666831 

           http://www.cnblogs.com/aiyr/p/6830981.html

           https://blog.csdn.net/qq_26033611/article/details/80448700



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有