在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python的四舍五入如何去實現呢

夏日余暉 ? 來源:Harmony技術專家 ? 作者:Harmony技術專家 ? 2022-10-12 11:19 ? 次閱讀

Python 的四舍五入,還真有點小麻煩。

1、使用 round

大多數情況下,我們會使用 round 來保留小數,但這并不符合我們在數學知識里的規則。

round(number[,ndigits])

round() 把 number(通常是浮點數) 按如下規則(Python3)進行四舍五入的:

先說下 ndigits 不為 0 的情況:

如果保留位數的后一位小于等于 4,則舍去,如 round(5.214,2) = 5.21

如果保留位數的后一位等于 5,且該位數后面沒有數字,則不進位,如 round(5.215,2) = 5.21

如果保留位數的最后一位等于 5,且該位數后面有數字,則進位,如 round(5.2151,2) = 5.22

如果保留位數的最后一位大于等于 6 ,則進位。如 round(5.216,2) = 5.22

pYYBAGNGMbWACbu7AABQ_srL7p0219.png

但是上述規則 2 也有例外,比如:

poYBAGNGMcaAAtltAAAsBFtEigA081.png

究其原因,浮點數用用二進制表示的時候只能表示近似值,雖然我們看到的是 0.645,實際上 Python 存儲的是 0.645000000000000017763568394002504646778106689453125,Python 是按照 IEEE754 標準存儲浮點數的。

再說下 ndigits 為 0 或 None 的情況:

如果保留位數的后一位小于等于 4,則舍去,如 round(1.4) = 1

如果保留位數的后一位等于 5,且后面沒有數字,則取最近的偶數,如 round(1.5)=2,round(2.5)=2

如果保留位數的后一位等于 5,且后面有數字,則近位,如 round(2.51)=3

如果保留位數的最后一位大于等于 6 ,則進位。如 round(1.6) = 2

pYYBAGNGMd-AK2V8AABIAXzTvvY705.png

請注意, f 字符串的保留結果與 round 一致:

pYYBAGNGMfGAWET8AAAskhIuCfA979.png

那么如何獲得和數學上的四舍五入規則一致的方法呢?請使用方法二:

2、使用 Decimal

這種方法有個前提,那就是必須先把小數轉換成字符串,這樣才可以精確的表示浮點數。

pYYBAGNGMgOAYrecAACsIjyFzsQ078.png

以上程序的輸出如下:

poYBAGNGMhWAcDI6AAAqS_zOmzo317.png

完全符合我們數學上的四舍五入。

最后的話

浮點數在二進制的表示方法中只能表示近似值。了解了浮點數表示法之后,再看四舍五入,就不會覺得那么奇怪了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4799

    瀏覽量

    84812
收藏 人收藏

    評論

    相關推薦

    LabVIEW如何實現四舍五入

    LabVIEW默認的實現的是科學四舍五入,而不是真正的、傳統的四舍五入,怎樣把2.5四舍五入為3?LabVIEW算出居然是2,并且試了好幾種方法都沒有辦法得到3,真是太無語了。
    發表于 01-25 00:16

    怎么讓1位小數四舍五入

    就是保留一位小數,多余的四舍五入。不要前面板設置的那種,labview可以做得到嗎?大神幫幫忙~!
    發表于 11-29 15:21

    在stm32中做float數的乘法運算,結果小數部分總是被四舍五入

    我在stm32中做float數的乘法運算,結果小數部分總是被四舍五入了,感覺好奇怪哦,代碼如下 float xreal[1024]={0}; float yimag[1024]={0}; float prodreal,prodimag,temp; for(i=0;i
    發表于 03-14 06:35

    請問如何將匯編寫的函數變成內聯函數?

    比如TI提供的四舍五入函數rnd_SP_RS.asm,怎么做成內聯函數?這樣比較省時間。謝謝!
    發表于 05-07 09:32

    labview 45

    labview沒有現存的四舍五入的程序,附件是保留小數點后兩位,大家可以參考著改成可以設置小數位的VI。
    發表于 01-14 09:51

    如何在iMX8M mini上捕捉奇怪的分辨率?

    我正在為 iMX8M 迷你模塊開發傳感器驅動程序。此傳感器允許具有奇數高度值的分辨率,例如寬度=240 x 高度=135。我注意到每次輸入奇數高度時,該值都會四舍五入到下一個偶數,在本例中,從 135 四舍五入到 136。這是一些特定于平臺的限制嗎?有什么理由不支持奇怪的
    發表于 03-24 07:25

    LabView設計程序,利用“六入成雙”的方法實現數字的舍入功能。

    請教各位大佬,目前只能實現四舍五入” 原理:“465湊偶”,這里“”是指≤4 時舍去,\"六\"是指≥6時進上,\"
    發表于 05-13 10:56

    單片機取下整怎么四舍五入

    單片機取下整怎么四舍五入
    發表于 09-26 08:17

    Xilinx平方根IP核的整形平方根算法

    Round Pos Inf:四舍五入,+0.5之后四舍五入,在負數時和第三種有區別。
    發表于 07-12 08:38 ?2683次閱讀
    Xilinx平方根IP核的整形平方根算法

    西門子PLC中四舍五入和截取函數顯示

    四舍五入和截取函數也屬于數據類型轉換函數。下表顯示了這些函數的名稱、數據類型(輸入參數和函數值)和任務。 “取整”指令用于將輸入 IN 的值取整為最接近的整數。該指令將輸入 IN 的值解釋為浮點數
    的頭像 發表于 08-16 16:08 ?6518次閱讀

    四舍五入的數字、典型規格和模擬的危險

    發表于 11-17 12:41 ?0次下載
    <b class='flag-5'>四舍五入</b>的數字、典型規格和模擬的危險

    四舍五入數字、典型規格和模擬的危險

    本教程強調了謹慎設計電路的重要性,并仔細思考設計的各個方面。很多時候,工程師被數據手冊的規格引入歧途,要么是因為它們是四舍五入的,要么是因為工程師只記住了典型規格。無論出現哪個陷阱,設計都可能產生災難性的結果。本文檔解釋了為什么依賴四舍五入的數字和典型規格,以及支持仿真而
    的頭像 發表于 02-10 10:42 ?922次閱讀
    <b class='flag-5'>四舍五入</b>數字、典型規格和模擬的危險

    ROUND函數是什么意思?

    ROUND函數是Excel中的一個基本函數,作用按指定的位數對數值進行四舍五入,語法是ROUND(number,num_digits)。
    的頭像 發表于 05-25 15:22 ?2.6w次閱讀
    ROUND函數是什么意思?

    FPGA加法截位處理方法介紹

    本模塊實現輸入與輸出位寬相同數據加法,并對結果進行四舍五入截位,對標matlab round函數。
    的頭像 發表于 04-18 16:53 ?810次閱讀

    接地探針如何計算

    安培數計算:對于每1A的電流(四舍五入到下一個最高整數),需要一個探針。
    的頭像 發表于 04-29 09:39 ?727次閱讀
    主站蜘蛛池模板: 国产伦精品一区二区三区| 手机在线视频观看| 噜噜噜噜噜噜色| 美女被免费网站视频九色| 久久99精品久久久久久久野外| 欧美黄色大片免费观看| 手机看片1024福利| 免费一级黄| 爱爱视频天天干| www.91大神| 久久精品看片| jinv在线视频| 性做久久久久久免费观看| 免费日本视频| 性欧美视频| 三级亚洲| 午夜片网站| 色色色色色色色色色色色色| 五月婷婷在线视频观看| 色香影视| 四虎精品久久久久影院| 亚洲va中文字幕无码| 色综合久久综合欧美综合图片| 欧美三级精品| 成人国产精品一级毛片视频| 国产日本在线播放| 亚洲福利视频网址| 五月天亚洲综合| 亚洲午夜综合网| 免费又爽又黄禁片视频在线播放| 1024毛片| 最近最新视频中文字幕4| 日韩在线网| 国产一区二区影院| www.你懂的.com| 欧美影欧美影院免费观看视频| 午夜影院7cdy| 妖精视频永久在线入口| 免费大片黄在线观看日本| 97爱爱| 国内精品网站|