购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第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被称为有小数部分数值的双精度浮点数。( )√( )×

(3)写出下面程序的运行结果。

探索思考

既然 float 可以保留数值的小数部分,而 double 数据类型的精度比 float数据类型的精度 还要高,那为什么每次声明变量的时候不都声明成 double ,这样不就可以避免一些小数的计算问题了吗?

计算机好比一个超级大的储存盒子,想像一下往盒子里放入3.14159265359和放3.14所需要的空间大小会一样大吗?

如果往盒子里放东西时没有做规划的话,就可能导致放不下或只能裁剪后再放入。

于是发明者就想到了 声明 ,即每放入一个东西就要空出一块专门的位置,就像一个小盒子。但是每个小盒子要多大呢?这就取决于数据类型了。如果是 int 数据类型,就空出一个小点的盒子,如果是 double 数据类型,就空出一个大盒子。这样就可以充分利用空间,而且也不会造成空间的浪费。 w3SS9fg2mmnoifveFer54l25Irj2K2K0Gh2S557F+APH5C3vp8Hpe5wNz8XwRx0j

点击中间区域
呼出菜单
上一章
目录
下一章
×