導航:首頁 > 編程語言 > 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位數控制相關的資料

熱點內容
golangweb編譯部署 瀏覽:921
怎樣踩東西解壓 瀏覽:967
單片機核心板外接鍵盤 瀏覽:394
怎樣打開自己的微信文件夾 瀏覽:422
單片機紅外測距原理 瀏覽:266
phpxdebug擴展 瀏覽:755
建築樓層凈高演算法 瀏覽:998
怎麼關閉智聯app求職狀態 瀏覽:416
pdf的文件夾怎麼列印 瀏覽:750
延拓演算法初值 瀏覽:784
首次適應演算法都不滿足的話怎麼辦 瀏覽:17
php56加密 瀏覽:554
金立手機app怎麼設置浮窗 瀏覽:494
程序員沒有社會地位 瀏覽:963
榮耀app怎麼解鎖 瀏覽:594
php程序員學歷 瀏覽:634
c語言編譯可以嗎 瀏覽:199
脂硯齋重評石頭記pdf 瀏覽:756
三星冰箱壓縮機哪裡產 瀏覽:427
唐朝加密方式 瀏覽:773