round()內建方法
輸入引數第一位為輸入的數值,第二位為小數點後儲存位數,不填預設為保留小數點後一位且取整
>>
>
round
(2.5
)3.0
>>
>
round(-
2.5)
-3.0
>>
>>
round
(2.675
)3.0
>>
>>
round
(2.675,2
)2.67
不過round()有個坑
round()如果只有乙個數作為引數,不指定位數的時候,返回的是乙個整數,而且是最靠近的整數。一般情況是使用四捨五入的規則,但是碰到捨入的後一位為5的情況,如果要取捨的位數前的數是偶數,則直接捨棄,如果奇數會向上取捨。看下面的示例(就是這麼神奇):
>>
>
round
(2.555,2
)2.56
>>
>>
round
(2.565,2
)2.56
>>
>>
round
(2.575,2
)2.58
>>
>>
round
(2.585,2
)2.58
使用格式化
print
("付款金額為:"
.format
(2.435))
付款金額為:
2.44
print
("付款金額為:"
.format
(2.434))
付款金額為:
2.43
print
("付款金額為:"
.format
(2.445))
付款金額為:
2.44
print
("付款金額為:"
.format
(2.444))
付款金額為:
2.44
使用:.2f,來表示小數,其中數字可以改為任意數字,對應保留為相應位數的小數點。同時和round()一般情況是使用四捨五入的規則,但是碰到捨入的後一位為5的情況,如果要取捨的位數前的數是偶數,則直接捨棄,如果奇數會向上取捨
這裡還有個小tips如果不加數字前的』.』,那麼不管數字是多少所有的都會預設保留小數點後6位
print
("付款金額為:"
.format
(2.435))
付款金額為:
2.435000
高精度使用decimal模組,配合getcontext
#該方法最好用於計算
```python
from decimal import decimal, getcontext
getcontext(
).prec =
3price = decimal(
1.12345
)print
(price)
1.1234500000000000596855898038484156131744384765625
weight = decimal(
1.12345
)print
(weight)
1.1234500000000000596855898038484156131744384765625
result = decimal(price * weight)
print
("付款金額為:{}"
.format
(result)
)付款金額為:
1.26
這裡簡單解釋下為什麼小數會變成那麼大一串數字。
浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,乙個浮點數的小數點位置是可變的,比如,1.23x109和12.3x108是完全相等的。浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
整數和浮點數在計算機內部儲存的方式是不同的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四捨五入的誤差。
getcontext().prec方法控制小數點位置,四捨五入
這裡有個坑需要注意的是getcontext().prec對於數值較大的運算,可以設定的適中,如9不然最後出現的值,可能無法正常顯示
除法
a =
1b =
3print
(a / b)
0.3333333333333333
剛剛簡單提過,是的,python中的除法是精確運算,結果為float小數,最大精度為python預設位數,小數點後16位
以上就是常用的幾種方法,其他其實還有math模組裡的方法啥的,不是常用的就不介紹了
Python 浮點型精度問題
目錄print 0.1 0.2 print 0.1 0.1 0.1 0.2 print 0.1 0.1 0.1 0.3 輸出 0.30000000000000004 0.10000000000000003 5.551115123125783e 17出現這種精度問題 因為十進位制與二進位制的相互轉換 ...
FPGA浮點小數與定點小數的換算及應用
有些fpga中是不能直接對浮點數進行操作的,只能採用定點數進行數值運算。所謂定點小數就是把小數點的位置固定,我們要用整數來表示小數。先以10進製為例。如果我們能夠計算12 34 46的話,當然也就能夠計算1.2 3.4 或者 0.12 0.34了。所以定點小數的 加減法和整數的相同,並且和小數點的位...
python 浮點數的精度問題
程式語言浮點數由單精度型和雙精度型兩種 單精度型佔4個位元組32位的記憶體空間只能提供七位有效數字 雙精度型佔8個位元組64位的記憶體空間可提供17位有效數字 python 3 浮點數預設的是 17位數字的精度 將精度高的浮點數轉化成精度低的浮點數,內建方法 round roud 2.873 2 2...