python 里面專門有一個(gè) round() 函數(shù)可以將任意的浮點(diǎn)數(shù)或者小數(shù)保留指定的位數(shù)。
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出滿城免費(fèi)做網(wǎng)站回饋大家。
廢話不多說了,直接上一個(gè)例子。
目標(biāo):將 x = 34.4567809278 保留3位小數(shù)
結(jié)果 34.457
round(x,k) 中 x 為要處理的浮點(diǎn)數(shù), k 指要保留的位數(shù)
print(round(x)) #直接返回整數(shù)
浮點(diǎn)型(Float)
Python的浮點(diǎn)數(shù)就是數(shù)學(xué)中的小數(shù),類似C語言中的double。
在運(yùn)算中,整數(shù)與浮點(diǎn)數(shù)運(yùn)算的結(jié)果是浮點(diǎn)數(shù).
浮點(diǎn)數(shù)也就是小數(shù),之所以稱為浮點(diǎn)數(shù),是因?yàn)榘凑湛茖W(xué)記數(shù)法表示時(shí),一個(gè)浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置是可變的,比如,1.23x109和12.3x108是相等的。浮點(diǎn)數(shù)可以用數(shù)學(xué)寫法,如1.23,3.14,-9.01,等等。但是對(duì)于很大或很小的浮點(diǎn)數(shù),就必須用科學(xué)計(jì)數(shù)法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
整數(shù)和浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部存儲(chǔ)的方式是不同的,整數(shù)運(yùn)算永遠(yuǎn)是精確的而浮點(diǎn)數(shù)運(yùn)算則可能會(huì)有四舍五入的誤差。
python提供了三種浮點(diǎn)值:內(nèi)置的float與complex類型,以及標(biāo)準(zhǔn)庫的decimal.Decimal類型。
float類型存放雙精度的浮點(diǎn)數(shù),具體取值范圍依賴于構(gòu)建python的c編譯器,由于精度受限,進(jìn)行相等性比較不可靠。
如果需要高精度,可使用decimal模塊的decimal.Decimal數(shù),這種類型可以準(zhǔn)確的表示循環(huán)小數(shù),但是處理速度較慢,適合于財(cái)政計(jì)算。
相關(guān)推薦:《Python基礎(chǔ)教程》
簡(jiǎn)單函數(shù)比較floatS是否相等:
def equal_float(a,b):
return abs(a-b)=sys.float_info.epsilon
其中sys.float_info.epsilon是機(jī)器可以區(qū)分出的兩個(gè)浮點(diǎn)數(shù)的最小區(qū)別
math模塊提供了許多可用于floatS的函數(shù):
math.pi:常量3.1415926
math.pow(x,y):x的y次冪(浮點(diǎn)值)
……………….
使用math時(shí)先用import math導(dǎo)入該模塊
十進(jìn)制數(shù)字
decimal模塊可以提供固定的十進(jìn)制數(shù),精度可以自己定。要?jiǎng)?chuàng)建Decimal,要先用import decimal導(dǎo)入模塊。
十進(jìn)制數(shù)是用decimal.Decimal()函數(shù)創(chuàng)建的,該函數(shù)可以接受一個(gè)整數(shù)或字符串作為參數(shù),但不能以浮點(diǎn)數(shù)作參數(shù)。如果用字符串作為參數(shù),可以使用簡(jiǎn)單的十進(jìn)制數(shù)表示或指數(shù)表示,另外,decimal.Decimal的精確表述方式可以可靠的進(jìn)行相等性比較。
(python3.1開始,使用decimal.Decimal from-float()函數(shù)將floats轉(zhuǎn)換為十進(jìn)制數(shù),以float型數(shù)作為參數(shù),并返回與該float最為接近的decimal.Decimal)
Python中的浮點(diǎn)數(shù)原理與運(yùn)算分析
本文實(shí)例講述了Python中的浮點(diǎn)數(shù)原理與運(yùn)算。分享給大家供大家參考,具體如下:
先看一個(gè)違反直覺的例子:
s = 0.
for i in range(10): s += .1
s
0.9999999999999999
# 錯(cuò)誤被累加
再看一個(gè)更為普遍,直接影響判斷邏輯的例子:
from math import sqrt
a = sqrt(2)
a*a == a
False
之所以會(huì)出現(xiàn)以上的結(jié)果,在于 Python (更準(zhǔn)確地說是計(jì)算機(jī)硬件體系結(jié)構(gòu))對(duì)浮點(diǎn)數(shù)的表示,我們來看計(jì)算機(jī)(基于二進(jìn)制)對(duì)十進(jìn)制小數(shù) 0.1 的表示,十進(jìn)制小數(shù)向二進(jìn)制小數(shù)轉(zhuǎn)換的方法請(qǐng)見 Python十進(jìn)制小數(shù)與二進(jìn)制小數(shù)相互轉(zhuǎn)換。將十進(jìn)制小數(shù) 0.1 轉(zhuǎn)換為二進(jìn)制時(shí)的結(jié)果為 0.0001100110011001....,無限循環(huán),計(jì)算機(jī)無法展示無限的結(jié)果,只能對(duì)結(jié)果進(jìn)行截?cái)?,這是浮點(diǎn)數(shù)精度問題的根源。
“==” on floats
基于以上的考慮,當(dāng)我們進(jìn)行浮點(diǎn)數(shù)的相等比較時(shí),要特別小心,直接使用 == 是有問題的,一種通用的做法即是,不是檢測(cè)浮點(diǎn)數(shù)是否相等,而是檢測(cè)二者是否足夠接近,
a = sqrt(2)
abs(a*a-2) epsilon
# 判斷是否小于某一小量
本文名稱:python浮點(diǎn)函數(shù),python 浮點(diǎn)數(shù)
當(dāng)前網(wǎng)址:http://m.rwnh.cn/article40/phjceo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、搜索引擎優(yōu)化、用戶體驗(yàn)、微信小程序、ChatGPT、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)