2023/09/11 浮点数实验
今天下午上了我们这个学期的第一节正式的Java课程。
通过老师对自己项目经历和自身经验的总结,我对编程也有了更加深刻的了解。
在学校,在我们平时学习的时候,老师现阶段更多的教授给我们的是有关于编程语言的基本语法知识应用等内容;但是在未来我们使用编程知识时,我们往往使用的所学的知识并不是我们所学的编程语言,而是我们用编程语言解决问题的思路。
学习编程,与其说是学习编程,倒不如说是锻炼一种基于计算机处理方式上的能力,锻炼自己逻辑化分析解决事情的能力。而我们所用的编程语言,只是解决问题的一种工具,工具是可以随着技术的更新被慢慢替代的,但是我们所锻炼的分析事情、解决事情的能力是不会消失的。在技术更新时,我们只需要学习工具的使用方法。
怎么用编程解决问题?老师总结了一段文字:复杂问题简单化、简单问题流程化。我们在解决我们无法理解或者无法一次解决的问题时,我们只需要将这个问题拆分成很多的小步骤,然后将这些小步骤进行流程化设计、逐步完成,最后再将其拼装,就得到了我们要解决问题的解决方法。这里的分解问题并没有一个确切的范围,但是分解后的小问题一定是要我们自己能够理解的,能够解决的。
这也就是这堂课老师所要教授给我们的核心。
然后就是计算机中的浮点数的储存,计算机中的浮点数的实际值并不是一个准确的数值,计算机中浮点数的储存是三部分的:整数,小数,小数部分的指数。进行浮点运算的时候会频繁的进行数位的转换,又因为1无论被2分多少次,结尾的数字都是5。所以,计算机中的浮点数的最后一位也一定是5,不存在别的情况。
public class TestDouble { public static void main(String args[]) { System.out.println("0.05 + 0.01 = " + (0.05 + 0.01)); System.out.println("1.0 - 0.42 = " + (1.0 - 0.42)); System.out.println("4.015 * 100 = " + (4.015 * 100)); System.out.println("123.3 / 100 = " + (123.3 / 100)); } }
结果:
0.05 + 0.01 = 0.060000000000000005 1.0 - 0.42 = 0.5800000000000001 4.015 * 100 = 401.49999999999994 123.3 / 100 = 1.2329999999999999
最后是数据域,局部的数据是会覆盖比其数据域大的同名数据的。
在下课前,老师也要求我们进行了一个课堂测试。
题目:
一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。
设计思路:
使用随机数,其中两个生成进行运算的两个值。还有一个生成正数对4求余.根据余数的情况输出四种运算符号。
import java.util.Random; public class 四则运算 { public static void main(String[] args) { Random rd=new Random(); for(int i=0;i<30;i++) { int x=rd.nextInt(100); int way=rd.nextInt(100); int y=rd.nextInt(100); way=way%4; System.out.print(x+" "); switch(way) { case 0: System.out.print("+ "); break; case 1: System.out.print("- "); break; case 2: System.out.print("* "); break; case 3: System.out.print("/ "); break; } System.out.println(y+"="); } } }