官术网_书友最值得收藏!

第5課 這面積總缺那么一點(浮點數數據類型)

掌握計算后,我設計了計算三角形和梯形面積的程序,但是發現面積的計算結果總是會少了那么一點。

為什么面積總會缺一點呢?想要解決這個問題需要先編寫出計算三角形和梯形面積的程序。

溫故知新

(1)三角形面積=底×高÷2。

運行程序:

     請輸入三角形的底邊長?
     7
     請輸入三角形的高?
     5
     三角形的面積是:
     17

實際上,三角形的面積是17.5。

(2)梯形面積=(上底+下底)×高÷2。

運行程序:

     請輸入梯形的上底?
     5
     請輸入梯形的下底?
     8
     請輸入梯形的高?
     3
     梯形的面積是:
     19

實際上,梯形面積是19.5。

area = (upperSole + bottom) * height / 2:程序計算也是先乘除后加減,遇到括號先計算括號里的內容。

提出思考

為什么這兩次面積計算都少了0.5呢?遇到問題,不要急于翻書查找答案,探索和思考出答案的過程要比答案本身更重要。

(1)想一想,計算結果和什么有關?①存放數字的變量;②計算的式子。

(2)想一想,變量都是什么數據類型?

(3)看一看,計算式子有沒有什么特別的?

探索思考

當我們遇到一個疑問的時候,要“上下求索”。從上尋求和這個問題有關聯的部分,列出導致這樣的結果的可能;向下探尋這個問題可能引出的變化,列出這些變化。然后逐一分析。

我發現最關鍵的可能是變量被聲明為int類型,即聲明的是整數類型,而缺少的部分都是小數部分。整數是不包含小數部分的,所以小數部分就出不來了。

float浮點數

把變量聲明為float數據類型。

運行程序:

     請輸入三角形的底邊長?
     7
     請輸入三角形的高?
     5
     三角形的面積是:
     17.5

float稱為浮點數數據類型(單精度),用于存儲實數值,即含有小數的值。如果你需要更高的精度,可以選擇double數據類型,它被稱為雙精度浮點數。

翻譯助力理解

● float:浮動的、漂浮。

● double:兩倍的,雙的。

area = length * height / 2:將計算length * height / 2,并將計算出的結果賦值給area。在編程中,該語句中的=被稱為賦值操作,是先進行等號右邊的計算,再將最終的結果賦值給等號左邊的變量。注意,這里的=不是等于的含義。

敲黑板

特別注意沒輸出的小數部分。

輸出結果竟然是1。

雖然已經將num定義為浮點數,但在3/2的計算過程中,由于3和2都是整數,計算仍然是按照整數類型的方式進行,直到計算出結果1后才將它賦值給浮點數類型的變量num。

想要解決這個問題,需要在計算的過程中引入浮點數,讓計算機按照浮點數來計算。

稍作改變,改為num = 3/2.0;,試試看吧。

降價促銷

雙十一到了,之前5元一瓶的牛奶迎來了大促銷,現在4.8元一瓶,并且還買一送一,請問買32瓶需要多少錢?

鞏固練習

(1)想要聲明一個變量存放數值3.14,以下哪句代碼可以做到?( )

A.float π

B.int π

C.float num

D.float 1num

(2)float被稱為有小數部分數值的雙精度浮點數。(?。蹋ā。?/p>

(3)寫出下面程序的運行結果。

探索思考

既然float可以保留數值的小數部分,而double數據類型的精度比float數據類型的精度還要高,那為什么每次聲明變量的時候不都聲明成double,這樣不就可以避免一些小數的計算問題了嗎?

計算機好比一個超級大的儲存盒子,想像一下往盒子里放入3.14159265359和放3.14所需要的空間大小會一樣大嗎?

如果往盒子里放東西時沒有做規劃的話,就可能導致放不下或只能裁剪后再放入。

于是發明者就想到了聲明,即每放入一個東西就要空出一塊專門的位置,就像一個小盒子。但是每個小盒子要多大呢?這就取決于數據類型了。如果是int數據類型,就空出一個小點的盒子,如果是double數據類型,就空出一個大盒子。這樣就可以充分利用空間,而且也不會造成空間的浪費。

主站蜘蛛池模板: 五华县| 鄢陵县| 黑山县| 敦化市| 盐津县| 南丰县| 西林县| 长海县| 田东县| 巫溪县| 廊坊市| 宜章县| 永定县| 常宁市| 项城市| 兴仁县| 堆龙德庆县| 团风县| 红原县| 白水县| 伊吾县| 五家渠市| 西青区| 外汇| 高雄县| 错那县| 洛南县| 安达市| 伊宁市| 阜南县| 洮南市| 塔城市| 盱眙县| 宁陕县| 永年县| 邓州市| 葵青区| 株洲市| 札达县| 海原县| 太仓市|