<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在python的輸出結果中,尤其是浮點數的輸出,當我們需要寫入文字檔案時,最好是採用統一的輸出格式,這樣也能夠增強結果的可讀性。而對於浮點數輸出位數的控制,可以通過{:.4f}、%.4f來指定列印或者輸出時的字串佔據空間,也可以通過round函數來對輸出前的結果進行轉化。而如果是取有效數位,需要用到{:.4},這幾種方法沒有優劣,只有看不同的場景,選取不同的精度控制方案。
在Python的一些長效任務中,不可避免的需要向文字檔案、二進位制檔案或者資料庫中寫入一些資料,或者是在螢幕上輸出一些文字,此時如何控制輸出資料的長度是需要我們注意的一個問題。比如對於一個二進位制檔案,如果輸出的浮點數長度一直在發生變化,則寫入到檔案之後,讀取的人按照位元位進行讀取就會讀到一堆錯誤的資料。因此,我們需要控制輸出位數,尤其是浮點數要格外小心。
一般情況下,我們可以通過round
來設定輸出浮點數的有效數位,其原理是對於一個給定的浮點數直接取前n位的有效數位,後續的數位四捨五入。而%.4f
和{:.4f}
這兩種格式化,是在輸出時取小數點後4位元列印,跟先取有效數位再列印是不一樣的,後面會提到。先看下這幾個方式的輸出異同點:
In [1]: pi_10=31.415926 In [2]: print (round(pi_10,4)) 31.4159 In [3]: print ('%.4f' % pi_10) 31.4159 In [4]: print ('{:.4f}'.format(pi_10)) 31.4159
上面的例子是小數點前和小數點後都有多位數位,另外類似的可以看下小數點前只有0的數位的輸出結果:
In [5]: pi_10=0.31415926
In [6]: print (round(pi_10,4))
0.3142
In [7]: print ('{:.4f}'.format(pi_10))
0.3142
In [8]: print ('%.4f' % pi_10)
0.3142
在上面的兩個案例中,我們發現三者的輸出結果都是一樣的。但是前面提到了先取有效數位再輸出,跟先輸出再取有效數位的區別,可以通過下面的一個案例體現出來:
In [9]: pi_10=3.1415926E-08 In [10]: print (round(pi_10,4)) 0.0 In [11]: print ('{:.4f}'.format(pi_10)) 0.0000 In [12]: print ('%.4f' % pi_10) 0.0000
這裡的輸入是一個小數點後有很多0的浮點數,但是這裡用的是科學計數法,也就是(3.1415926*10^{-8}),此時我們用這三種輸出方式,得到的結果全都是0,而且第一種方案更是直接小數點後都沒滿4位元。這是因為在用round取有效數位時,發現小數點後的數位太多,把當前的浮點數直接當成了0.0
而不是0.0000
,而後面兩個方案的過程更像是在列印出來這個數位之後,再把超過有效位數的數位去掉,因此會保留小數點後的4個0。但是,即使如此,得到的結果也不是我們所想要的結果。因為這個數位雖然很小,但是可能只是由於單位問題,並不代表這個數位產生的影響就是0,因此直接用這種取小數點後有效數位的方法可能會出問題。
這裡我們要介紹的取有效數位的方法,不再是去小數點後的有效數位,而是整體的有效數位。方法也很簡單,就是把上一個章節中的{:.4f}
改成{:.4}
,同樣的可以通過這麼幾個案例來理解控制有效數位的結果:
In [13]: pi_10=3.1415926E-08
In [14]: print ('{:.4}'.format(pi_10))
3.142e-08
In [15]: pi_10=0.31415926
In [16]: print ('{:.4}'.format(pi_10))
0.3142
In [17]: pi_10=31.415926
In [18]: print ('{:.4}'.format(pi_10))
31.42
我們發現,輸出的結果會根據輸入的格式改變而改變,如果輸入的小數位0過多,輸出結果會被自動轉換成科學計數法。而不僅僅是針對浮點數,{:.4}
還可以作用在字串中,效果如下:
In [19]: string='Hello World!'
In [20]: print ('{:.4}'.format(string))
Hell
在python的輸出結果中,尤其是浮點數的輸出,當我們需要寫入文字檔案時,最好是採用統一的輸出格式,這樣也能夠增強結果的可讀性。而對於浮點數輸出位數的控制,可以通過{:.4f}、%.4f來指定列印或者輸出時的字串佔據空間,也可以通過round函數來對輸出前的結果進行轉化。而如果是取有效數位,需要用到{:.4},這幾種方法沒有優劣,只有看不同的場景,選取不同的精度控制方案。
版權宣告
本文首發連結為:https://www.cnblogs.com/dechinphy/p/fprint.html
作者ID:DechinPhy
更多原著文章請參考:https://www.cnblogs.com/dechinphy/
打賞專用連結:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
騰訊雲專欄同步:https://cloud.tencent.com/developer/column/91958
到此這篇關於控制Python浮點數輸出位數的文章就介紹到這了,更多相關Python浮點數輸出位數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45