搜索

关于用javascript实现科学计算器功能的思路

发布网友 发布时间:2022-04-21 04:33

我来回答

5个回答

懂视网 时间:2022-05-12 12:39

这篇文章主要为大家详细介绍了JavaScript实现计数器的基础方法 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了js实现计数器的具体代码,供大家参考,具体内容如下

通过使用 JavaScript,设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。称之为计时事件。

在 JavaScritp 中使用计时事件是很容易的,两个关键方法是:

setInterval() - 间隔指定的毫秒数不停地执行指定的代码。
setTimeout() - 暂停指定的毫秒数后执行指定的代码

Note: setInterval() 和 setTimeout() 是 HTML DOM Window对象的两个方法。在这里只介绍了setTimeout()方法;


<!DOCTYPE html>
<html>

 <head>
 <meta charset="UTF-8">
 <script type="text/javascript">
 var c = 0
 var t

 function timedCount() {
 document.getElementById('txt').value = c;
 c = c + 1;
 //创建计时器,在指定周期内循环执行
 t = setTimeout("timedCount()", 1000);
 }

 function stopCount() {
 //清除计时器
 clearTimeout(t);
 }
 </script>
 </head>

 <body>

 <form>
 <input type="button" value="开始计时!" onClick="timedCount()">
 <input type="text" id="txt">
 <input type="button" value="停止计时!" onClick="stopCount()">
 </form>



 </body>

</html>

效果:

点击开始则会从0开始计数,停止计时则会暂停在那个时刻,再点击开始则会继续累加计数...但是这个程序有一个小bug,当不停的点击开始计时,计时的速度会增加,而且点击一次停止计时不会停止,要响应的点击很多次才可以停止.....

热心网友 时间:2022-05-12 09:47

构建一个数学表达式的字符串,然后用 eval函数 (http://www.w3school.com.cn/js/jsref_eval.asp) 执行,返回值就是该表达式的值;这是最简单的方法。
sin、log、e、pi 用Math对象的方法或属性来代替。字符串替换函数replace (http://www.w3school.com.cn/js/jsref_replace.asp)
'sin(12)+log(23)*sqrt(2)'.replace(/(sin|cos|tan|log|sqrt)/g,'Math.$1');

注意:
1. 最好能检测用户输入的表达式(基础检查:没有非法字符如&~ßä;高级检查:括号是否对称,运算符是否正确 以及错误时的处理方法),否则js执行出错的几率会很大。
2. log表示的其实是数学中的ln。使用到数学中的log时可以用 换底公式(http://ke.baidu.com/view/1920827.htm) 变形。

z.B:
eval('Math.sin(Math.PI/2)'); // 1
eval('Math.sin(3*Math.PI/2)'); // -1
eval('Math.log(Math.exp(3))'); // 3
eval('sin(12)+log(23)*sqrt(2)'.replace(/(sin|cos|tan|log|sqrt)/g,'Math.$1')); // 3.768552690623

-----------------------------
Math 对象属性
FF: Firefox, IE: Internet Explorer
属性 描述 FF IE
E返回算术常量 e,即自然对数的底数(约等于2.718)。13
LN2返回 2 的自然对数(约等于0.693)。13
LN10返回 10 的自然对数(约等于2.302)。13
LOG2E返回以 2 为底的 e 的对数(约等于 1.414)。13
LOG10E返回以 10 为底的 e 的对数(约等于0.434)。13
PI返回圆周率(约等于3.14159)。13
SQRT1_2返回返回 2 的平方根的倒数(约等于 0.707)。13
SQRT2返回 2 的平方根(约等于 1.414)。13

Math 对象方法
FF: Firefox, IE: Internet Explorer
方法描述FFIE
abs(x)返回数的绝对值。13
acos(x)返回数的反余弦值。13
asin(x)返回数的反正弦值。13
atan(x)以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。13
atan2(y,x)返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。13
ceil(x)对数进行上舍入。13
cos(x)返回数的余弦。13
exp(x)返回 e 的指数。13
floor(x)对数进行下舍入。13
log(x)返回数的自然对数(底为e)。13
max(x,y)返回 x 和 y 中的最高值。13
min(x,y)返回 x 和 y 中的最低值。13
pow(x,y)返回 x 的 y 次幂。13
random()返回 0 ~ 1 之间的随机数。13
round(x)把数四舍五入为最接近的整数。13
sin(x)返回数的正弦。13
sqrt(x)返回数的平方根。13
tan(x)返回角的正切。13
toSource()返回该对象的源代码。1-
valueOf()返回 Math 对象的原始值。14

参考资料:http://www.w3school.com.cn/js/jsref_obj_math.asp

热心网友 时间:2022-05-12 11:05

这个主要涉及到的是字符串分析。
(1 + 3)× 2 - 1
拿这个输入来分析。
那么首先我要有一个循环,循环这个字符串。
循环里边要判断当前字符的类型,比如着一个,我检查到当前字符是“(”号,
那么我下边的逻辑就是要找到“)”号。然后我要再对内部的东西进行循环。
依此类推,分析函数可以做成递归调用,模拟一下栈。
这是分析方法,当然首先你要确认你要进行几种运算,即,你的软件边界是什么,
如果只是加减运算,逻辑可能会简单很多。
希望对你有帮助。

热心网友 时间:2022-05-12 12:39

简单点的.定义三个变量,比如a,b,o, a用来保存第一个操作数,o用来保存操作符(即+-*/),b用来保存第二个操作数,当a,b,o都有数据并按等号或另一个操作符后,按a,o,b的顺序按字符串连接,然后用eval函数取结果,存入a变量,同时清空o和b变量.回显a变量的值.如果按的是等号以外的操作符,则将操作符存入o变量.

热心网友 时间:2022-05-12 14:31

<script type="text/javascript">
<!--
var num=eval("7*9");
document.write(num);
//-->
</script>
看来你有够懒
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top