python精度最高的类型-谈谈关于Python里面小数点精度控制的问题

更新时间:2023-07-26 20:15:13 阅读: 评论:0

python精度最⾼的类型-谈谈关于Python⾥⾯⼩数点精度控制
的问题
基础
浮点数是⽤机器上浮点数的本机双精度(64 bit)表⽰的。提供⼤约17位的精度和范围从-308到308的指数。和C语⾔⾥⾯的double类型相同。Python不⽀持32bit的单精度浮点数。如果程序需要精确控制区间和数字精度,可以考虑使⽤numpy扩展库。
Python 3.X对于浮点数默认的是提供17位数字的精度。
关于单精度和双精度的通俗解释:
单精度型和双精度型,其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~
1.7E+308,可提供16位有效数字。
要求较⼩的精度
将精度⾼的浮点数转换成精度低的浮点数。
这个是使⽤最多的,刚看了round()的使⽤解释,也不是很容易懂。round()不是简单的四舍五⼊的处理⽅式。
For the built-in types supporting round(), values are rounded to the clost multiple of 10 to the power minus ndigits; if two multiples are equally clo, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2).
>>> round(2.5)
2
>>> round(1.5)
2
>>> round(2.675)
3
>>> round(2.675, 2)
2.67
round()如果只有⼀个数作为参数,不指定位数的时候,返回的是⼀个整数,⽽且是最靠近的整数(这点上类似四舍五⼊)。但是当出现.5的时候,两边的距离都⼀样,round()取靠近的偶数,这就是为什么round(2.5) = 2。当指定取舍的⼩数点位数的时候,⼀般情况也是使⽤四舍五⼊的规则,但是碰到.5的这样情况,如果要取舍的位数前的⼩树是奇数,则直接舍弃,如果偶数这向上取舍。看下⾯的⽰例:
>>> round(2.635, 2)
2.63
>>> round(2.645, 2)
2.65
>>> round(2.655, 2)
2.65
>>> round(2.665, 2)
2.67
>>> round(2.675, 2)
2.67
2. 使⽤格式化
效果和round()是⼀样的。
>>> a = ("%.2f" % 2.635)
>>> a
"2.63"
>>> a = ("%.2f" % 2.645)
>>> a
"2.65"
>>> a = int(2.5)
西红柿鸡蛋汤面条>>> a
2
要求超过17位的精度分析
python默认的是17位⼩数的精度,但是这⾥有⼀个问题,就是当我们的计算需要使⽤更⾼的精度(超过17位⼩数)的时候该怎么做呢?
1. 使⽤格式化(不推荐)
>>> a = "%.30f" % (1/3)
>>> a包餐制
"0.333333333333333314829616256247"
可以显⽰,但是不准确,后⾯的数字往往没有意义。
2. ⾼精度使⽤decimal模块,配合getcontextti7赛程
>>> from decimal import *
>>> print(getcontext())
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps= [InvalidOperation, DivisionByZero, Overflow])
>>> getcontext().prec = 50
>>> b = Decimal(1)/Decimal(3)
>>> b
Decimal("0.33333333333333333333333333333333333333333333333333")
>>> c = Decimal(1)/Decimal(17)
>>> c
Decimal("0.058823529411764705882352941176470588235294117647059")
>>> float(c)
0.058823529411764705
默认的context的精度是28位,可以设置为50位甚⾄更⾼,都可以。这样在分析复杂的浮点数的时候,可以有更⾼的⾃⼰可以控制的精度。其实可以留意下context⾥⾯的这rounding=ROUND_HALF_EVEN 参数。ROUND_HALF_EVEN, 当half的时候,靠近even.
关于⼩数和取整
既然说到⼩数,就必然要说到整数。⼀般取整会⽤到这些函数:
1. round()
这个不说了,前⾯已经讲过了。⼀定要注意它不是简单的四舍五⼊,⽽是ROUND_HALF_EVEN的策略。
2. math模块的ceil(x)
取⼤于或者等于x的最⼩整数。
3. math模块的floor(x)
去⼩于或者等于x的最⼤整数。
>>> from math import ceil, floor
>>> round(2.5)
2
>>> ceil(2.5)
3
>>> floor(2.5)
属羊的出生年份表2
>>> round(2.3)
2
>>> ceil(2.3)
3
>>> floor(2.3)
2
>>>
【Python】关于Python⾥⾯⼩数点精度控制的问题
基础 浮点数是⽤机器上浮点数的本机双精度(64 bit)表⽰的.提供⼤约17位的精度和范围从-308到308的指数.和C语⾔⾥⾯的double类型相同.Python不⽀持32bit的单精度浮点数.如果 ...
【我要学python】愣头青之⼩数点精度控制
写在最前⾯:今天遇到了棘⼿的问题,看了两遍才看懂,本⽂属于转载+修改,原出处是Herbert"s Blog 基础 浮点数是⽤机器上浮点数的本机双精度(64 bit)表⽰的.提供⼤约17位的精度和范围从 ...
Poj 2350 Above Average(精度控制)
⼀.Description It is said that 90% of frosh expect to be above average in their class. You are to pro ...
Python numpy 浮点数精度问题
Python numpy 浮点数精度问题 在复现FP(fictitious play, Iterative solution of games by fictitious play-page393)算 ...
Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,⽤if语句实现条件控制. 语法格式: if <;条件判断1>: <;执⾏1> elif <;条件判断 ...
python基础之条件控制与循环
Python3 条件控制 Python条件语句是通过⼀条或多条语句的执⾏结果(True或者Fal)来决定执⾏的代码块. 计算机之所以能做很多⾃动化的任务,因为它可以⾃⼰做条件判断. ⽐如,输⼊⽤户 ...
C++ 数据类型及相关问题 及输出精度控制
1.有哪些数据类型?
2.数据类型在不同的编译器会有不同的位宽,如何得知? 使⽤如下命令: cout<
POI使⽤:⽤poi接⼝不区分xls/xlsx格式解析Excel⽂档(41种⽇期格式解析⽅法,5种公式结果类型解析⽅法,3种常⽤数值类型精度控制办法)
⼀.使⽤poi解析excel⽂档 注:全部采⽤poi接⼝进⾏解析,不需要区分xls.xlsx格式,不需要判断⽂档类型. poi中的⽇期格式判断仅⽀持欧美⽇期习惯,对国内的⽇期格式并不⽀持判断,怎么办? ...
随机推荐
cf591d
题意:给出船的最⼤速度v,起点,终点.风在前t秒是⼀个⽅向,t秒后就⼀直是第⼆个⽅向.两个⽅向已知. 船速永远⼤于风速.问船在⾃由掌握速度和⾏驶⽅向的情况下,最快多久到终点. 分析:⾸先排除⼀种⽅法, ...
python类的特性莲开并蒂
#encoding=utf-8 class Province: #静态字段 memo = "这⾥是静态变量" def __init__(lf,name,capital,leader,flag): ...
JavaWeb学习总结(⼗五)--过滤器的应⽤
⼀.解决全站字符乱码(post和get中⽂编码问题) 乱码问题: 获取请求参数中的乱码问题: POST请求:request.tCharacterEncoding("utf-8" ...
解决了IE8不⽀持数组的indexOf⽅法
故事作文300字
ie在过去给我们添了很多坑. if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/ ) { ...
Linux指令--wc
Linux系统中的wc(Word Count)命令的功能为统计指定⽂件中的字节数.字数.⾏数,并将统计结果显⽰输出. 1.命令格式: wc [选项]⽂件... 2.命令功能: 统计指定⽂件中的字节数. ...
Entity framework 绑定到Datagridview的添加删除修改
环保之家Entity framework 绑定到Datagridview的添加删除修改 using System; using System.Collections.Generic; using System ...
Ubuntu下录制和制作Gif图⽚--实战版
1.背景 ubuntu下,写⽂章的时候,经常⽤到Gif图⽚,这个⾃⼰怎么制作呢? ⽹上查了⼀下资料,⼤致的流程就是:安装 录屏软件(kazam) 和 视频转 Jpeg 的⼯具(mplayer) ,使 ...
orleans发送⼴播消息
⼀个client发送消息给orleans, 就只需要掉⽤Grain的函数就⾏了. 但是有时候Grain需要发送消息给client, 在orleans⾥⾯, 就只能通过Obrver来实现. publ ...
php ldap添加与修改
/** * ldap 备份 * @param int $cardid * @param string $urname * @param string $password 未加密密码 * @retu ...
dd命令的conv=fsync,oflag=sync/dsync
韩国辣炒年糕
conv的参数有 1.sync Pad every input block to size of "ibs" with trailing zero bytes. When ud with "blo ...

本文发布于:2023-07-26 20:15:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1118769.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:精度   控制   浮点数   问题   条件   时候
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图