zoukankan      html  css  js  c++  java
  • 浮点数的乘除

     1 //浮点数乘除法
     2 function muldivfloat(num0,num1,bzstr){
     3     var ln0=getws(num0),//第一个值的的小数位数
     4         ln1=getws(num1),//第二个值的的小数位数
     5         lnz=Math.max(ln0,ln1),//取得小数位数中的最大数
     6         lncz,//小数位数的统计值
     7         num0str,//第一个值数字转字符
     8         num1str,//第二个值数字转字符
     9         resultz,//计算结果
    10         lnqh;//除法后结果存储小数
    11     
    12     if(lnz===0){//如果数字原本就是整形,直接执行计算
    13         if(bzstr==="*"){
    14             resultz=Number(num0)*Number(num1);
    15         }else{
    16             resultz=Number(num0)/Number(num1);
    17         }
    18         return resultz;
    19     }
    20     
    21     num0str=clearpoint(num0,".");
    22     num1str=clearpoint(num1,".");
    23     //根据传入的符号来判断是做乘法还是除法运算
    24     if(bzstr==="*"){
    25         lncz=ln0+ln1;//小数位数的总数
    26         resultz=addwsfront((Number(num0str)*Number(num1str)).toString(),lncz);//对乘法运算后的结果执行位数补全
    27         return Number(resultz.slice(0,-lncz)+"."+resultz.slice(-lncz));
    28     } else {
    29         lncz=ln0-ln1;//小数位数的差数
    30         resultz=Number(num0str)/Number(num1str);
    31         if(lncz===0){//如果除数,被除除数小数位相同,即直接返回计算值
    32             return resultz;
    33         }
    34         lnqh=getws(resultz);//除法计算后可能的小数位数
    35         resultz=clearpoint(resultz,".");//除法运算结果去小数位数
    36         lncz=lncz+lnqh;//最后应该保留的小数位数
    37         if(lncz>0){//如果要保留的小数位数不够
    38             resultz=addwsfront(resultz,lncz);//对计算的结果前补0
    39             return Number(resultz.slice(0,-lncz)+"."+resultz.slice(-lncz));
    40         }else {//如果要保留的小数位数小于0
    41             lncz=Math.abs(lncz);
    42             resultz=addwsback(resultz,lncz);//对计算的结果后补0
    43             return Number(resultz);
    44         }
    45         
    46     }
    47     
    48     
    49 }
    50 //后补0补够位数
    51 function addwsback(str,len){
    52     for(var i=0;i<len;i++){
    53         str=str+"0";
    54     }
    55     return str;
    56 }
    57 //前置0补够位数
    58 function addwsfront(str,len){
    59     var strlen=str.length,
    60         cz=len-strlen,
    61         returnstr="";
    62     if(cz<=0){
    63         returnstr=str;
    64     } else {
    65         for(var i=0;i<cz;i++){
    66             str="0"+str;
    67         }
    68         returnstr=str;
    69     }
    70     return returnstr;
    71 }
    72 //取得小数位数
    73 function getws(num){
    74     try {
    75         ln=num.toString().split(".")[1].length;//获取小数位数
    76     }catch(e){
    77         ln=0;
    78     }
    79     return ln;
    80 }
    81 //补全0
    82 function getbq(str,len){
    83     for(var i=0;i<len;i++){
    84         str=str+"0";
    85     }
    86     return str;
    87 }
    88 //浮点型数去小数点转字符串
    89 function clearpoint(num,str){
    90     return num.toString().replace(str,"");
    91 }

     muldivfloat(被除数,除数,"/")进行除法计算

     muldivfloat(数字1,数字2,"*")进行乘法计算

    结果运行:

    返回计算结果

  • 相关阅读:
    1、使用Xcode修改iOS项目工程名和路径名
    ios 里如何处理四舍五入的问题
    ios app 开发中ipa重新签名步骤介绍
    如何重新签名ipa文件
    最近研究xcodebuild批量打包的一些心得
    C#Timer
    插座断电提醒(测试阶段)
    C#MessageBox 自动关闭窗口
    插座继电器测试
    C# TCPListener
  • 原文地址:https://www.cnblogs.com/zhanghuiyun/p/5981595.html
Copyright © 2011-2022 走看看