[前端小白] JavaScript 的作业不会,求解答😅

2019-04-15 09:09:32 +08:00
 wsrfde

作业内容:

参考现实生活中的计算器,用 JS 开发简易计算器,输入 x、y 以及运算符可以计算出数值,如用户输入 4,5,* 可以返回 20,输入 3,8,+返回结果为 11。

要求:需要 HTML 页面,页面需要包括两个数字输入框、一个运算符下拉列表(+-*/)和一个按钮,当用户输入完成,点击按钮在页面输出计算后的值。

作业提示:

1.参考现实生活中的计算器,给按钮绑定 onclick 事件,写一个函数,把代码放在函数里

2.加、减、乘、除 4 种运算都要有

3.需要注意一些临界值和数据完整性判断,比如除数不能为 0 等,并且能够给与用户相应的提示

4.注意用户的输入是随意的,尽量保证 JS 程序的完美,输出结果完全正确

下面是我的代码,正常能计算的,但是作业第三条判断语句怎么写啊,比如除数不能为 0 给用户提示…

<script type="text/javascript"> function calc(){ var num1 = parseFloat(document.getElementById('num1').value); var num2 = parseFloat(document.getElementById('num2').value); var operator = document.getElementById('op').value; var sum = jisuan(num1,num2,operator); alert(typeof sum); // if(sum=parseFloat(ture)){ // document.getElementById('result').innerText = sum; // }else{ // alert("非数字值"); // } } function jisuan(n1,n2,oper){ switch(oper){ case '+': return n1+n2; case '-': return n1-n2; case '*': return n1*n2; case '/': return n1/n2; default : return "未知操作符"; } } </script>
num1:<input type="text" id="num1">

<select id="op">

	<option value="+">+</option>

	<option value="-">-</option>

	<option value="*">*</option>

	<option value="/">/</option>

</select>

num2:<input type="text" id="num2">

=<span id="result"></span>

<button onclick="calc()">计算</button>
2324 次点击
所在节点    问与答
15 条回复
Tokin
2019-04-15 09:16:37 +08:00
`case '/':
if(n1==0) return "除数不能为 0";
return n1 / n2;`
符合条件提前 return 就行了
murmur
2019-04-15 09:17:53 +08:00
自己的作业要自己做
正常来说这个是要做 x 缀表达式?忘了叫啥了只有面试的时候看过
但是既然是 js 是可以投机取巧
错误的表达式书写 try 以下就出错了
除 0 是===Infinity 的
wsrfde
2019-04-15 09:25:12 +08:00
@Tokin 测试了一下,谢谢啦~ 直接写 if 也可以是把,我以为要用 if else 哈哈,学傻了
wsrfde
2019-04-15 09:26:41 +08:00
@murmur 翻遍了笔记只想到要用 if 语句,但是不知道添加在哪,所以来问下大神嘿嘿
leo108
2019-04-15 09:26:59 +08:00
eval 了解一下
tcdw
2019-04-15 11:01:07 +08:00
Number()
isNaN()
isFinite()
limingjie138
2019-04-15 11:24:45 +08:00
前两天留过这么一个作业 计算像#5 说的 eval 方法,剩下任何要求在计算前写判断就完事,比如小数点
yamedie
2019-04-15 11:25:39 +08:00
还要考虑 0.1+0.2=0.30000000000000004 的问题
aleko
2019-04-15 12:11:48 +08:00
@yamedie 你是魔鬼吗
rabbbit
2019-04-15 12:31:49 +08:00
1 + '1' // '11'
0.1 * 0.2 // 0.020000000000000004
1 / 0 // Infinity
1 + ~1 // -1
1 + !1 // 1
1 + 1^1 // 3
1^1 // 0
dog
codermagefox
2019-04-15 13:02:28 +08:00
@yamedie #8 第一反应就是这个,哈哈哈哈,JS 做计算器?计算个鬼啦
azh7138m
2019-04-15 13:06:53 +08:00
@codermagefox 恕我直言,要么你不是科班出身,要么你基础太差
浮点精度问题是 IEEE 754 的问题,不是 js 独有,其他语言也会这样
codermagefox
2019-04-15 13:07:54 +08:00
@azh7138m #12 是是是,我基础太差了,其他语言也会这样
yamedie
2019-04-15 14:00:05 +08:00
@codermagefox

也有办法解的
+(0.1+0.2).toFixed(8) === 0.3 // true
codermagefox
2019-04-15 14:03:24 +08:00
@yamedie #14 谢谢您,不过我真不需要科普

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/555164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX