导航:首页 > 编程语言 > python位数控制

python位数控制

发布时间:2023-08-17 08:53:18

python 如何控制输出的小数长度

Python里面小数点长度精度控制方法:

一、要求较小的精度

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

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).

>>> 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.'

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

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

>>> 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.')

>>> c = Decimal(1)/Decimal(17)

>>> c

Decimal('0.')

>>> 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

>>>

Ⅱ 当使用print语句输出时,Python将所有浮 点数字格式化为小数点后两位。对吗

不会的,要配合format格式化输出。
x = 10/3
print(x)
print('{:.2f}'.format(x))

Ⅲ python 输入正整数pqn,计算p/q的值,精确到小数位n位,控制n使得p/q的值可以达

def test(p, q, n):
return('{a:.{b}f}'.format(a = p/q, b = n))

Ⅳ python怎么控制小数点位数比如float类型a=1.23456789,我想把a转化为a=1.2345的形式,这个怎么转化呀

可以使用decimal模块,decimal意思为十进制,这个模块提供了十进制浮点运算支持。

常用方法

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

2.要从浮点数据转换为Decimal类型

from decimal import *

Decimal.from_float(12.222)

# 结果为Decimal('12.')

3.通过设定有效数字,限定结果样式:

from decimal import *

getcontext().prec=6

Decimal(1)/Decimal(7)

# 结果为Decimal('0.142857'),六个有效数字

4.四舍五入,保留几位小数

from decimal import *

Decimal('50.5679').quantize(Decimal('0.00'))

# 结果为Decimal('50.57'),结果四舍五入保留了两位小数

5.Decimal 结果转化为string

from decimal import *

str(Decimal('3.40').quantize(Decimal('0.0')))

# 结果为'3.40',字符串类型

(4)python位数控制扩展阅读:

Python提供了decimal模块用于十进制数学计算,它具有以下特点:

提供十进制数据类型,并且存储为十进制数序列;

有界精度:用于存储数字的位数是固定的,可以通过decimal.getcontext().prec=x 来设定,不同的数字可以有不同的精度

浮点:十进制小数点的位置不固定(但位数是固定的)

参考资料:

Python-网络

Ⅳ 用Python编写一个,输入一个四位整数,求它的千位,百位,十位,个位各是多少

#!/usr/bin/env python
# -*- coding: utf-8 -*-

a = input()

print "千位是: %s" % str(a)[0]

print "百位是: %s" % str(a)[1]

print "十位是: %s" % str(a)[2]

print "个位是: %s" % str(a)[3]

当运行程序时,在控制台输入2345,输出结果是:

千位是: 2
千位是: 3
千位是: 4
千位是: 5

(5)python位数控制扩展阅读

1、python输入用法介绍:

python输入时使用input( )函数,这个函数只能接收“数字”的输入,返回所输入的数字的类型( int, float )。示例:

a = input("input a: ")

print(a,type(a))

2、python字符串切割:

python中string字符串使用[]可以通过索引获取字符串中字符,例如:

a = "Hello"

print "a[1] 输出结果:", a[1]

a[1] 输出结果: e

Ⅵ python中round函数的用法

round函数python:

这个函数相当于调去里面的一个函数,有一个数组,从中里面调取一个数据。简单的说,round是使用四舍五入对小数进行位数控制的函数,round(a,b),a参数是小数,b是小数点后保留的位数。实际使用需要考虑的python2和python3版本的差异与小数精度的问题。

ound函数的使用用法

根据Excel的帮助得知,round函数就是返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。

round函数的语法是:ROUND(number,num_digits),即:Round(数值,保留的小数位数)

Number:需要进行四舍五入的数字。

Num_digits:指定的位数,按此位数进行四舍五入。

其中,如果num_digits大于0,则四舍五入到指定的小数位。

如果num_digits等于0,则四舍五入到最接近的整数。

如果num_digits小于0,则在小数点左侧进行四舍五入。

阅读全文

与python位数控制相关的资料

热点内容
电脑蹦出文件夹 浏览:753
安徽ipfs云服务器 浏览:515
acmc用什么编译器 浏览:230
golangweb编译部署 浏览:923
怎样踩东西解压 浏览:969
单片机核心板外接键盘 浏览:396
怎样打开自己的微信文件夹 浏览:424
单片机红外测距原理 浏览:268
phpxdebug扩展 浏览:757
建筑楼层净高算法 浏览:1000
怎么关闭智联app求职状态 浏览:418
pdf的文件夹怎么打印 浏览:752
延拓算法初值 浏览:786
首次适应算法都不满足的话怎么办 浏览:19
php56加密 浏览:556
金立手机app怎么设置浮窗 浏览:496
程序员没有社会地位 浏览:963
荣耀app怎么解锁 浏览:594
php程序员学历 浏览:636
c语言编译可以吗 浏览:201