m不跳转butanchuang 小数运算,精度缺失

m不跳转butanchuang 小数运算,精度缺失

function init(){

var num=document.getElementById("num");

num.value=0;

num.disabled="disabled";

document.getElementsByName("input");

var oButton=document.getElementsByTagName("input");

var btn_num1;

var fh;

for(var i=0;i<oButton.length;i++){

oButton[i].onclick=function(){

if(isNumber(this.value)){

if(isNull(num.value)){

num.value=this.value;

}else{

num.value=num.value+this.value;

}

}else{

var btn_num=this.value;

//alert(btn_num);

switch(btn_num){

case "+":

btn_num1=parseInt(num.value);//类型转化

num.value=0;

fh="+";

break;

case "-":

btn_num1=parseInt(num.value);//类型转化

num.value=0;

fh="-";

break;

case "*":

btn_num1=parseInt(num.value);//类型转化

num.value=0;

fh="*";

break;

case "/":

  btn_num1=Number(num.value);//类型转化

  num.value=0;

  fh="/";

    break;

case "c":

  num.value=0;

  break;

case ".":

  num.value=dec_number(num.value);

   break;

case "+/-":

  num.value=sign(num.value);

   break;

case "←":

  num.value=back(num.value);

case "=":

switch(fh){

case "+":

num.value=btn_num1+Number(num.value);//number可以用于小数

break;

case "-":

num.value=btn_num1-Number(num.value);

break;

case "*":

num.value=btn_num1*Number(num.value);

break;

case "/":

if(Number(num.value==0)){

alert("除数不能为0");

num.value=0;//文本框的内容默认是字符型

}else{

 num.value=btn_num1/Number(num.value);

}

break;

}

}

}

}

}

}

function sign(n){

if(n.indexOf("-")==-1){

n="-"+n;

}else{

n=n.substr(1,n.length);

}

return n;

}

function back(n){

n=n.substr(0,n.length-1)

if(isNull(n)){

n="0";

}

return n;

}

function dec_number(n){

if(n.indexOf(".")==-1){

n=n+".";

}

return n;

}

function isNumber(n){

return !isNaN(n);

}

function isNull(n){

if(n=="0"||n.length==0){

return true;

}else{

return false;

}

}

-----------

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<link rel="stylesheet" type="text/css" href="calc.css">

<script type="text/javascript" src="calc.js"></script>

<script type="text/javascript" src="js/imooc.js"></script>

</head>

<body onload="init(),ff()">

<div id="div1">

<div id="div2">

<input type="text" value="0" name="num" id="num"/>

</div>

<div id="div3">

<input type="button" value="c"name=""id="" />

<input type="button" value="←"name=""id="" />

<input type="button" value="+/-"name=""id="" />

<input type="button" value="/"name=""id="" />

<input type="button" value="1"name=""id="n1" />

<input type="button" value="2"name=""id="" />

<input type="button" value="3"name=""id="" />

<input type="button" value="*"name=""id="" />

<input type="button" value="4"name=""id="" />

<input type="button" value="5"name=""id="" />

<input type="button" value="6"name=""id="" />

<input type="button" value="-"name=""id="" />

<input type="button" value="7"name=""id="" />

<input type="button" value="8"name=""id="" />

<input type="button" value="9"name=""id="" />

<input type="button" value="+"name=""id="" />

<input type="button" value="0"name=""id="" />

<input type="button" value="."name=""id="" />

<input type="button" value="="name=""id="" />

<input type="button" value="m"name=""id="imooc" />

</div>

</div>

</body>

</html>

--------

function ff(){

document.getElementById("imooc").onclick()=function(){

window.location.href="http://www.imooc.com";

}

}

----------------------------------------------------------

*{

margin:0px;

padding:0px;

}


div{

width: 170px;

}


#div1{

top:60px;

left:100px;

position:absolute;

}


input[type="button"]{

width: 30px;

margin-right: 5px;

}


input[type="text"]{

width: 149px;

text-align: right;

background-color: #fff;

border: 1px solid;

padding-right: 10px;

box-sizing: border-box;//不延伸content-box延伸

}

input[type="button"]:hover{

background-color: blue;

border: 1px solid;

}

---------


还存在两个问题

m不跳转butanchuang

小数运算,精度缺失


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2021-02-21 19:33:11

同学你好,1、m不跳转,是同学对应引入的对应ff函数有问题呐,这里老师书写的m跳转到慕课网的代码如下:

http://img1.sycdn.imooc.com//climg/60324472094d126806230083.jpg

http://img1.sycdn.imooc.com//climg/6032440c09657afe10360178.jpg

如上所示,同学可以检查一下自己的ff函数。

    2、精度丢失其实是js底层精度的问题,这里同学可以尝试使用toFixed保留两位小数,比如

http://img1.sycdn.imooc.com//climg/603244d60952fa2a04370050.jpg

如果同学想表达的不是这个意思,还麻烦同学具体描述一下。

祝学习愉快!

  • 提问者 小啊白兔 #1

    跳转事件已解决本身写的函数多加了(),

    精度不准确是前面一些类型转化是int型

    还有就是您表达的这个多位小数的方法,如果我要保留多位小数,只能在语句中添加toFicxed()吗,有没有更便捷的方式

    2021-02-23 14:05:59
  • 好帮手慕小班 回复 提问者 小啊白兔 #2

    同学你好,同学可以使用Number来接收数据,来接收小数,减少接收数据的精度丢失。

    toFicxed是保留小数最简便的方式了。

    祝学习愉快!

    2021-02-23 17:55:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师