1、使用字符串格式化
專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)寧津免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。
大部分語言都可以使用字符串格式化的方法來實現(xiàn)保留兩位小數(shù)的效果,python也不例外:
a = 12.345
print("%.2f" % a) # %代表格式化輸出,.2代表小數(shù)點后保留兩位,f代表數(shù)據(jù)類型是浮點型
2、使用round內置函數(shù)
python內置了一個名為round的函數(shù),這個函數(shù)可以用來對數(shù)據(jù)進行格式化。代碼如下:
a = 12.345
a1 = round(a, 2) #將a通過round函數(shù)處理后賦值給a1.傳入的2代表保留兩位小數(shù)
print(a1)
3、使用decimal模塊
類似于java,python也專門提供了一個decimal模塊用于精確運算,它也可以進行數(shù)據(jù)的格式化輸出。代碼如下:
from decimal import Decimal
a = 12.345
Decimal(a).quantize(Decimal("0.00")) # 使用默認的進位方式(同round)“0.00”表示保留小數(shù)點后兩位
以上就是常規(guī)的保留兩位小數(shù)的方法,接下來介紹兩種非常規(guī)的方法(使用字符串處理的方法,這種方法僅保留兩位小數(shù),不做四舍五入)
4、使用序列切片
原理很簡單,只要找到小數(shù)點,然后進行切片即可。代碼如下:
a = 12.345
str(a).split('.')[0] + '.' + str(a).split('.')[1][:2]
#使用序列切片的方式,切出小數(shù)點前的數(shù)據(jù),還有小數(shù)點后兩位的數(shù)據(jù),然后進行拼裝
5、使用re模塊
類似于切片,不過這次使用正則匹配來定位小數(shù)點位置。
import re
a = 12.345
re.findall(r"\d{1.}?\.\d{2}", str(a))
#使用正則匹配,將符合規(guī)則(一個小數(shù)點前有很多位數(shù)字,小數(shù)點后面只有兩位數(shù)字的片段)字符串片段取出
它是內置函數(shù)。build-in,應該是C語言的。用的應該是 c的library
在python2.73.源碼中
有這樣一句。pymath.h:extern double round(double);
在pymath.c中定義如下:
#ifndef HAVE_ROUND
double
round(double x)
{
double absx, y;
absx = fabs(x);
y = floor(absx);
if (absx - y = 0.5)
y += 1.0;
return copysign(y, x);
}
簡單的說,round是使用四舍五入對小數(shù)進行位數(shù)控制的函數(shù),
round(a, b), a參數(shù)是小數(shù),b是小數(shù)點后保留的位數(shù)。
實際使用需要考慮的python2和python3版本的差異與小數(shù)精度的問題。
參考
1、通常,python四舍五入使用內置的round函數(shù)就可以了。
2、然而,對于需要精確的四舍五入,就有問題。
3、原因是,部分小數(shù)無法完全用二進制表示。
3、于是,作為一個較方便的做法,我們可以使用下面方式實現(xiàn)精確的四舍五入:def round_up(value):? ? ?"""四舍五入保留2位小數(shù) :param value:數(shù)值。
4、原理就是將數(shù)字放大100倍,以利用下面的精確的四舍五入的結果 。
新聞名稱:python的round函數(shù) python的round函數(shù)調用
網(wǎng)址分享:http://chinadenli.net/article38/dogshpp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、App設計、小程序開發(fā)、品牌網(wǎng)站制作、品牌網(wǎng)站設計、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)