精华内容
下载资源
问答
  • python浮点数保留两位
    千次阅读
    2020-11-20 22:32:22

    基础

    浮点数是用机器上浮点数的本机双精度(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位有效数字。

    要求较小的精度

    将精度高的浮点数转换成精度低的浮点数。

    1.round()内置方法

    这个是使用最多的,刚看了round()的使用解释,也不是很容易懂。round()不是简单的四舍五入的处理方式。

    For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, 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).

    1 >>> round(2.5)2 2

    3 >>> round(1.5)4 2

    5 >>> round(2.675)6 3

    7 >>> round(2.675, 2)8 2.67

    round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2。当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的这样情况,如果要取舍的位数前的小数是奇数,则向下取舍,如果偶数则向上取舍。看下面的示例:

    1 >>> round(2.635, 2)2 2.63

    3 >>> round(2.645, 2)4 2.65

    5 >>> round(2.655, 2)6 2.65

    7 >>> round(2.665, 2)8 2.67

    9 >>> round(2.675, 2)10 2.67

    2. 使用格式化

    效果和round()是一样的。

    1 >>> a = ("%.2f" % 2.635)2 >>>a3 '2.63'

    4 >>> a = ("%.2f" % 2.645)5 >>>a6 '2.65'

    7 >>> a = int(2.5)8 >>>a9 2

    要求超过17位的精度分析

    python默认的是17位小数的精度,但是这里有一个问题,就是当我们的计算需要使用更高的精度(超过17位小数)的时候该怎么做呢?

    1. 使用格式化(不推荐)

    1 >>> a = "%.30f" % (1/3)2 >>>a3 '0.333333333333333314829616256247'

    可以显示,但是不准确,后面的数字往往没有意义。

    2. 高精度使用decimal模块,配合getcontext

    1 >>> from decimal import *

    2 >>> print(getcontext())3 Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])4 >>> getcontext().prec = 50

    5 >>> b = Decimal(1)/Decimal(3)6 >>>b7 Decimal('0.33333333333333333333333333333333333333333333333333')8 >>> c = Decimal(1)/Decimal(17)9 >>>c10 Decimal('0.058823529411764705882352941176470588235294117647059')11 >>>float(c)12 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的最大整数。

    1 >>> from math importceil, floor2 >>> round(2.5)3 2

    4 >>> ceil(2.5)5 3

    6 >>> floor(2.5)7 2

    8 >>> round(2.3)9 2

    10 >>> ceil(2.3)11 3

    12 >>> floor(2.3)13 2

    14 >>>

    更多相关内容
  • python 保留浮点数两位小数

    万次阅读 多人点赞 2021-05-26 13:40:27
    另外,python不支持浮点数float小数点填充"0": 所以在某些场景下,需要保留确定位数显示小数的话,只能使用字符串格式化的方法: 参考: https://www.cnblogs.com/zhzhlong/p/10732218.html ...

    主要有三种:

    在这里插入图片描述

    Tips:

    • round的计算不是简单地四舍五入,一般如果对精度有要求,不推荐用round(如果是numpy ndarray,还可以用np.around(x,2)

    • 另外,python不支持浮点数float小数点填充"0":
      在这里插入图片描述
      所以在某些场景下,需要保留确定位数显示小数的话,只能使用字符串格式化的方法:
      在这里插入图片描述

    参考:

    https://www.cnblogs.com/zhzhlong/p/10732218.html

    展开全文
  • python保留两位小数

    千次阅读 2020-11-24 04:07:23
    今天写程序的时候碰到了一个问题关于如何控制浮点数只显示小数点后两位,正常的想法是用round函数,例如 round(a, 2),但是在面对下面的问题时候round就不太好用了>>> a=13.949999999999999>>> round(a, 2)13....

    今天写程序的时候碰到了一个问题关于如何控制浮点数只显示小数点后两位,正常的想法是用round函数,例如 round(a, 2),但是在面对下面的问题时候round就不太好用了

    >>> a=13.949999999999999

    >>> round(a, 2)

    13.949999999999999

    上网查了资料,有网友提供了一种方法

    >>> print "%.2f" % a 13.95

    还可以使用decimal

    decimal.Decimal类型是Python中满足高精度计算的一种数据类型,使用进需要导入decimal包

    定义Decimal数据类型:

    1 无法使用赋字面值的方式定义

    2 定义方式如下:

    >>> import decimal >>> x = decimal.Decimal(87345) >>> x Decimal(‘87345’) >>> x = decimal.Decimal(‘123.3344332566334’) >>> x Decimal(‘123.3344332566334’) 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确

    如果需要从浮点数据转换为Decimal类型,可能使用如下方法

    >>> x = decimal.Decimal.from_float(127.3323)

    >>> x

    Decimal(‘127.332300000000003592504072003066539764404296875’)

    适用于整型操作同样适用于Decimal类型

    I have 3 questions pertaining to decimal arithmetic in Python, all 3 of which are best asked inline:

    1)

    >>>fromdecimalimportgetcontext,Decimal>>>getcontext().prec=6>>>Decimal('50.567898491579878')*1Decimal('50.5679')>>># How is this a precision of 6? If the decimal counts whole numbers as>>># part of the precision, is that actually still precision?>>>

    and

    2)

    >>>fromdecimalimportgetcontext,Decimal>>>getcontext().prec=6>>>Decimal('50.567898491579878')Decimal('50.567898491579878')>>># Shouldn't that have been rounded to 6 digits on instantiation?>>>Decimal('50.567898491579878')*1Decimal('50.5679')>>># Instead, it only follows my precision setting set when operated on.>>>

    3)

    >>># Now I want to save the value to my database as a "total" with 2 places.>>>fromdecimalimportDecimal>>># Is the following the correct way to get the value into 2 decimal places,>>># or is there a "better" way?>>>x=Decimal('50.5679').quantize(Decimal('0.00'))>>>x# Just wanted to see what the value wasDecimal('50.57')>>>foo_save_value_to_db(x)>>>

    本机测试用例:

    >>> import decimal

    >>> x = decimal.Decimal(87345)

    >>> x

    Decimal('87345')

    >>> print x

    87345

    >>> from decimal import getcontext, Decimal

    >>> x = Decimal('0.998531571219').quantize(Decimal('0.00'))

    >>> x

    Decimal('1.00')

    >>> print x

    1.00

    >>> x = Decimal('0.998531571219').quantize(Decimal('0.0000'))

    >>> x

    Decimal('0.9985')

    >>> print x

    0.9985

    >>> y = Decimal.from_float(0.998531571219)

    >>> y

    Decimal('0.99853157121900004700165709436987526714801788330078125')

    >>> y = Decimal.from_float(0.998531571219).quantize(Decimal('0.0000'))

    >>> y

    Decimal('0.9985')

    >>> print y

    0.9985

    >>> f1 = 0.998531571219

    >>> f1

    0.998531571219

    >>> type(f1)

    >>> f2 = str(f1)

    >>> f2

    '0.998531571219'

    >>> type(f2)

    >>>

    展开全文
  • python保留两位小数怎么表示

    千次阅读 2020-11-24 04:07:22
    这里有三种方法,round(a,2)'%.2f' % aDecimal('5.000').quantize(Decimal('0.00'))当需要输出的结果要求有两位小数的时候,字符串形式的:'%.2f' % a 方式最好,其次用Decimal。需要注意的:1. 可以传递给Decimal...

    5d1c42a0a7d2e560.jpg

    这里有三种方法,

    round(a,2)

    '%.2f' % a

    Decimal('5.000').quantize(Decimal('0.00'))

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

    需要注意的:

    1. 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。

    2. Decimal还可以用来限定数据的总位数。

    谈谈关于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位有效数字。

    相关教程推荐:Python视频教程

    以上就是python中保留两位小数怎么表示的详细内容,更多请关注Gxl网其它相关文章!

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    TAG标签:python

    展开全文
  • int函数能够(1)把符合数学格式的数字型字符串转换成整数(2)把浮点数转换成整数,但是只是简单的取整,而非四舍五入。举例:1 aa = int("124") #Correct2 print "aa = ", aa #result=1243 bb = int(123.45) #...
  • python如何保留指定小数点位数?

    千次阅读 2020-11-24 04:07:22
    python保留指定小数点位数的方法:1、使用’%.2f’ %f 方法f = 1.23456print('%.4f' % f)print('%.3f' % f)print('%.2f' % f)结果:1.23461.2351.23这个方法会进行四舍五入2、format函数Python2.6 开始,新增了...
  • python格式化输出保留2小数的实现方法我是小白就不用多说了,学习python做了个练习题,结果运行了一遍,发现输入金额后得到的有很多小数,虽然不知道为什么,但是看得很不舒服,就想到应该把让小数点后只保留2...
  • 同样的在Java中也是如此,所以个int型的数据相除需要返回一个浮点型数据的时候就需要强制类型转换,例如 float a = (float)b/c ,其中b、c都是int型数据。Python中分为3种除法:传统除法、精确除法、地板除。传统除...
  • 问题昨天遇到一个问题,在 6.6045 保留三位小数时,使用 round() 函数进行计算,我们...1.114999999999999991182,所以当你对这个小数精确到小数点后两位的时候,实际上小数点后第三位是 4,所以四舍五入,结果为 ...
  • 将x = 34.4567809278保留3小数 print(round(x,3)) #34.457 round(x,k)x为要处理的浮点数,k指要保留的位数
  • python实验时碰到这么一道题:输入三个浮点数,求它们的平均值并保留 1 小数,对小数后第二位数进行四舍五入,最后输出结果错误示范因为涉及到四舍五入,随便搜了一下,发现了好多博客都用round(),就直接拿来用了...
  • 包进行处理即可,今天这个需求有点懵,搜索相关资料,在不改变小数的情况下,可以有种解决方案。这样就不能直接进行表示了,一般处理小数的位数问题基本上都是自己控制位数,通过。不在字符串中,不做处理直接...
  • 比如对于一个二进制文件,如果输出的浮点数长度一直在发生变化,则写入到文件之后,读取的人按照比特进行读取就会读到一堆错误的数据。因此,我们需要控制输出位数,尤其是浮点数要格外小心。 常规控制方法 一般...
  • python保留两位小数:In [1]: a = 5.026In [2]: b = 5.000In [3]: round(a,2)Out[3]: 5.03In [4]: round(b,2)Out[4]: 5.0In [5]: '%.2f' % aOut[5]: '5.03'In [6]: '%.2f' % bOut[6]: '5.00'In [7]: float('%.2f' % ...
  • Python保留两位小数不四舍五入

    千次阅读 2020-09-11 10:38:29
    Python保留两位小数不四舍五入
  • [ 0.333, 0.999, 0.1 ]print json.dumps(data)输出结果如下:复制代码 代码如下:$ python floatjson.py[0.33300000000000002, 0.999, 0.10000000000000001]能不能指定浮点数的输出格式,比如精确到小数点后两位呢?...
  • Python的一些长效任务中,不可避免的需要向文本文件、二进制文件或者数据库中写入一些数据,或者是在屏幕上输出一些文本,此时如何控制输出数据的长度是需要我们注意的一个问题。
  • 1. 使用format函数 num = 123.456 print("num: {:.2f}".format(num))
  • python 浮点数保留小数

    千次阅读 2019-10-06 21:15:23
    这里有三种方法, round(a,2) '%.2f' % a Decimal('5.000').quantize(Decimal('0.00')) ...当需要输出的结果要求有两位小数的时候,字符串形式的:'%.2f' % a 方式最好,其次用Decimal。 需要注意的: 1. ...
  • 我们在上一次课程中(python窗口编程-3:数处理(1) ),实现了一个正常工作的窗口程序,并初步支持了整数数字输入的功能,但负数的处理方法实际是错误的(你发现了么?)。这节课,我们完善对负数的处理,并增加浮点数...
  • python format 保留小数,补0

    千次阅读 2021-07-09 13:03:26
    print("{:.2f}".format(3.1415926)) 传送门
  • python 浮点数计算

    2021-03-18 15:04:49
    python 浮点数计算之---------------- 减法 class float_subtraction(): def __init__(self, _sbt, _mnd): self._mnd = _mnd self._sbt = _sbt self.b_sbt = _sbt if _sbt > _mnd else _mnd self.s_mnd = _...
  • python float保留两位小数

    千次阅读 2020-11-20 22:32:22
    原博文2020-04-10 14:38 −res = 1.015res = round(res, 2) # 保留两位小数,1.01...012622相关推荐2019-08-10 10:46 −float()函数是python中一个比较常用的内建函数,我们要详细掌握它的使用方法,避免在编写代码...
  • python基础之 格式化占位符

    千次阅读 2020-12-06 04:40:40
    python基础之 格式化占位符1、为什么要有占位符?我们先看没有占位符的情况a = 1print(a)这个可以正常输出:1但是,假如我们要让它输出的结果带上说明文字呢?例如这样:“这是a的值:1”你如果像下面这么写可以吗?a =...
  • Python 浮点数计算 小数取舍指南

    千次阅读 2022-02-15 10:48:05
    浮点数在计算机硬件中表示为以 2 为基数(二进制)的小数。 举例而言,十进制的小数 0.125=1/10 + 2/100 + 5/1000 同理二进制小数 0.001 0*1/2+0*1/4+1*1/8得十进制的0.125(二进制的小数转换为十进制...
  • python输入保存两位小数的四种办法:a = 5.5461办法一:round(a,2)办法二:float('%.2f' % a)相干保举:《Python视频教程》办法三:‘%.2’ %a办法四:from decimal import DecimalDecimal('5.026').quantize...
  • 方法1: f = 2.3456789 print('%.2f'%f) print('%.3f'%f) print('%.4f'%f) ...这个方确实能把数字进行显示上的...四舍五入的计算之后,保留两位有效数字 print(round(2.25,1)) print(round(2.35,1)) print(round
  • 虽然我不知道为什么,但是看起来很不舒服,我认为我应该只保留小数点后两位数字找到了一种方法: 将{0}更改为{: .2f}# 一家商场在降价促销。如果购买金额50-100元(包含50元和100元)之间,# 会给10%的折扣,如果购买...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,857
精华内容 7,542
关键字:

python浮点数保留两位