20171104

JavaScript 编程题
解释一下下面代码的输出。
1.console.log(0.1 + 0.2); //0.30000000000000004
2.console.log(0.1 + 0.2 == 0.3); //false

1.
0.1 的二进制表示为 1.1001100110011001100110011001100110011001100110011001 1(0011)+ * 2^-4;
当64bit的存储空间无法存储完整的无限循环小数,而IEEE 754 Floating-point采用round to nearest, tie to even的舍入模式,因此0.1实际存储时的位模式是0-01111111011-1001100110011001100110011001100110011001100110011010;
0.2 的二进制表示为 1.1001100110011001100110011001100110011001100110011001 1(0011)+ * 2^-3;
当64bit的存储空间无法存储完整的无限循环小数,而IEEE 754 Floating-point采用round to nearest, tie to even的舍入模式,因此0.2实际存储时的位模式是0-01111111100-1001100110011001100110011001100110011001100110011010;
实际存储的位模式作为操作数进行浮点数加法,得到 0-01111111101-0011001100110011001100110011001100110011001100110100。转换为十进制即为0.30000000000000004。

2.
十进制0.1
  => 二进制0.00011001100110011…(循环0011)
  =>尾数为11001100110011001100…1100(共52位,除了小数点左边的1),指数为-4(二进制移码为00000000010),符号位为0
  => 计算机存储为:0 00000000100 10011001100110011…11001
  => 因为尾数最多52位,所以实际存储的值为0.00011001100110011001100110011001100110011001100110011001
而十进制0.2
  => 二进制0.0011001100110011…(循环0011)
  =>尾数为11001100110011001100…1100(共52位,除了小数点左边的1),指数为-3(二进制移码为00000000011),符号位为0
  => 存储为:0 00000000011 10011001100110011…11001
  因为尾数最多52位,所以实际存储的值为0.00110011001100110011001100110011001100110011001100110011
那么两者相加得:
  0.00011001100110011001100110011001100110011001100110011001
  + 0.00110011001100110011001100110011001100110011001100110011 (确认??)
  = 0.01001100110011001100110011001100110011001100110011001100
  转换成10进制之后得到:0.30000000000000004

MySQL 编程题
表名 student_score

name course score
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
查询出「张」姓学生中平均成绩大于 75 分的学生信息。

CREATE TABLE studnet_score1(
    id  INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    course VARCHAR(50) NOT NULL,
    score INT NOT null
)
INSERT INTO studnet_score1(name,course,score) VALUES("张三","语文",81);
INSERT INTO studnet_score1(name,course,score) VALUES("张三","数学",75);
INSERT INTO studnet_score1(name,course,score) VALUES("李四","语文",76);
INSERT INTO studnet_score1(name,course,score) VALUES("李四","数学",90);
INSERT INTO studnet_score1(name,course,score) VALUES("王五","语文",81);
INSERT INTO studnet_score1(name,course,score) VALUES("王五","数学",100);
INSERT INTO studnet_score1(name,course,score) VALUES("王五","英语",90);

SELECT  name,AVG(score) AS "平均成绩" FROM studnet_score1
WHERE name LIKE "张%" 
GROUP BY name;```

结果:
| name | 平均成绩 |
| ------------- |:-------------:|
|张三 | 78|

**Java 编程题**
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

package practice;

public class Demo {
public static void main(String[] args) {
int count = 1;
for (int i = 1; i < 10; i++) {
count = (count + 1) * 2;
}
System.out.println(“第一天共有桃子” + count);
}
}

输出结果:
第一天共有桃子1534
“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值