作业内容:
参考现实生活中的计算器,用 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>
1
Tokin 2019-04-15 09:16:37 +08:00 1
`case '/':
if(n1==0) return "除数不能为 0"; return n1 / n2;` 符合条件提前 return 就行了 |
2
murmur 2019-04-15 09:17:53 +08:00
自己的作业要自己做
正常来说这个是要做 x 缀表达式?忘了叫啥了只有面试的时候看过 但是既然是 js 是可以投机取巧 错误的表达式书写 try 以下就出错了 除 0 是===Infinity 的 |
3
wsrfde OP @Tokin 测试了一下,谢谢啦~ 直接写 if 也可以是把,我以为要用 if else 哈哈,学傻了
|
5
leo108 2019-04-15 09:26:59 +08:00
eval 了解一下
|
6
tcdw 2019-04-15 11:01:07 +08:00 via Android
Number()
isNaN() isFinite() |
7
limingjie138 2019-04-15 11:24:45 +08:00 via iPhone
前两天留过这么一个作业 计算像#5 说的 eval 方法,剩下任何要求在计算前写判断就完事,比如小数点
|
8
yamedie 2019-04-15 11:25:39 +08:00 3
还要考虑 0.1+0.2=0.30000000000000004 的问题
|
10
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 |
11
codermagefox 2019-04-15 13:02:28 +08:00
@yamedie #8 第一反应就是这个,哈哈哈哈,JS 做计算器?计算个鬼啦
|
12
azh7138m 2019-04-15 13:06:53 +08:00 via Android
@codermagefox 恕我直言,要么你不是科班出身,要么你基础太差
浮点精度问题是 IEEE 754 的问题,不是 js 独有,其他语言也会这样 |
13
codermagefox 2019-04-15 13:07:54 +08:00
@azh7138m #12 是是是,我基础太差了,其他语言也会这样
|
14
yamedie 2019-04-15 14:00:05 +08:00
|
15
codermagefox 2019-04-15 14:03:24 +08:00
@yamedie #14 谢谢您,不过我真不需要科普
|