探索計算之美_第1頁
探索計算之美_第2頁
探索計算之美_第3頁
探索計算之美_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

探索計算之美高中信息技術新教材注重理論與實踐的結合以及學科本身的科學性和理論性,并且以實現信息意識、計算思維、數字化學習與創(chuàng)新以及信息社會責任四個核心素養(yǎng)的提升為目標。筆者以Python的round()函數作為切入點,對數據與計算的關系和深層鏈接進行探究。文章中涉及Python的語法規(guī)則均以Python3為基礎,代碼運行環(huán)境為python3.8.5版本?!癜l(fā)現問題1.round()函數的概念round()函數為Python內置(built-in)的函數,Python安裝完成后即具有該函數的功能,不需要再引入額外的模塊。round()函數提供了低精度的四舍五入的功能,需要重點理解低精度以及四舍五入的原則。2.round()函數的參數round()函數提供了兩個參數,round(x,n),其中參數x可以是整型(int)、實型(float)或布爾型(bool)的數值,不能是字符串、列表或字典等數據結構類型的值。參數n是一個整數值,為可選參數,用來表示小數點后保留的位數,如round(1.233,2),值為1.23,即小數點后保留2位。參數n可以為負數,當n為負數時,相當于對整數的第n位(-1,對應個位)進行四舍五入,如round(1123,-2),值為1100,如圖1所示。n為負整數的情況,非重點探究內容,不做討論。3.round()函數取整實驗基于Python的IDLE交互式Shell工具,進行round()函數的取整實驗,如圖2所示。對于round(1.3)和round(1.7),是符合四舍五入的原則的。對于round(1.5)和round(2.5),結果為什么都是2?round(3.5)和round(4.5)結果為什么都是4?這是需要思考和探究的第一個問題?!褡繁舅菰?.Python版本差異如下頁圖3所示,round()函數在Python3.0版本相比Python2的變化,主要內容包括如下幾點:①round()函數從Python3.0開始,對于0.5、1.5、2.5這類小數部分值為0.5的float類型數值,取整時是舍入到偶數的一邊。例如,round(2.5),值為2;round(1.5),值也是2。以1.5為例,由于1.5與1和2的距離是一樣的,都是0.5的差值,因此,在Python3.0版本開始遵循親偶數邊取整的原則,我們稱之為親偶性。②對于round(x)函數中只有一個參數x的情況,是取整操作,則返回int整型。例如,round(1.555),返回值為2,類型為int。③對于round(x,n)函數中包括兩個參數x和n的情況,返回值的類型,與參數x的類型一致,不再是Python2版本中定義的統(tǒng)一返回float類型。例如,round(1,2)返回1,類型為int;round(1.000,2),則返回1.0(等同于1.00),類型為float,如圖4所示。2.round()函數取整總結根據上述Python3版本的變更分析,可以總結得出round(x)函數的特點為“四舍六入五親偶”。這里的四舍六入較好理解,對于五親偶,即針對0.5,1.5,2.5這類小數部分值為0.5的float類型數值,通過round(x)函數取整時,結果是舍入到偶數的一邊。對于round(1.5)和round(2.5)的返回值都為2的問題,已經找到了答案?!駟栴}拓展通過round()函數進行float類型數值的保留小數位數的四舍五入實驗,發(fā)現如下問題:兩個數值的小數部分都是0.675,保留兩位小數的四舍五入結果為什么不一樣呢(如圖5)?帶著這樣的問題,思考float類型數值在計算機中是如何表示的,進一步探究float類型的浮動本質?!窀颖举|以0.4和100.4為例,通過print()函數設置參數“%.30f”格式化輸出30位小數的方式,來觀察Python3的float數值的真實值表示,與原始值相同的部分為17位有效數字,如圖6和圖7所示。0.4格式化輸出30位小數的數值中紅框內的17位有效數字,小數部分占了16位,整數部分為0,占了1位。100.4格式化輸出30位小數的數值中紅框內的17位有效數字,小數部分占了14位,整數部分為100,占了3位。Python3中float類型數值的精度為17位有效數字。如圖8所示,Python3版本基于IEEE-754中對浮點數的定義,確定了17位有效數字來表示float類型數值。通過float類型數值的判等運算,也可以驗證17位有效數字的精度控制,進一步理解float類型數值的浮動本質。對于float類型的數值比較,Python只會取其前17位有效數字的值進行比較,17位有效數字包括整數和小數部分。如下頁圖9所示,0.4與0.4000000000000001(小數部分的第16位值為1)進行判等比較值為False,是因為0.4等價于0.4000000000000000,第16位值為0,而0.4與0.40000000000000001(小數部分第17位值為1)和0.40000000000000002(小數部分第17位值為2)判等為True,則是因為前17位有效數字部分的值是相同的,小數部分精度范圍外的值不參與比較運算?!衽俑鶈柕拙确秶獾臄抵凳侨绾萎a生的?如下頁圖10所示,0.675小數點后第17

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論