js浮点数计算

< script type = "text/javascript" >

     // 两个浮点数求和
     function  accAdd ( num1 , num2 ) {
        var  r1 , r2 , m ;
        try {
           r1  =  num1. toString ( ) . split ( '.' ) [ 1 ] . length ;
        } catch ( e ) {
           r1  =   0 ;
        }
        try {
           r2 = num2. toString ( ) . split ( "." ) [ 1 ] . length ;
        } catch ( e ) {
           r2 = 0 ;
        }
       m = Math. pow ( 10 , Math. max ( r1 , r2 ) ) ;
        // return (num1*m+num2*m)/m;
        return  Math. round ( num1 * m + num2 * m ) / m ;
     }
    
     // 两个浮点数相减
     function  accSub ( num1 , num2 ) {
        var  r1 , r2 , m ;
        try {
           r1  =  num1. toString ( ) . split ( '.' ) [ 1 ] . length ;
        } catch ( e ) {
           r1  =   0 ;
        }
        try {
           r2 = num2. toString ( ) . split ( "." ) [ 1 ] . length ;
        } catch ( e ) {
           r2 = 0 ;
        }
       m = Math. pow ( 10 , Math. max ( r1 , r2 ) ) ;
       n = ( r1 >= r2 ) ? r1 : r2 ;
        return   ( Math. round ( num1 * m - num2 * m ) / m ) . toFixed ( n ) ;
     }
     // 两数相除
     function  accDiv ( num1 , num2 ) {
        var  t1 , t2 , r1 , r2 ;
        try {
           t1  =  num1. toString ( ) . split ( '.' ) [ 1 ] . length ;
        } catch ( e ) {
           t1  =   0 ;
        }
        try {
           t2 = num2. toString ( ) . split ( "." ) [ 1 ] . length ;
        } catch ( e ) {
           t2 = 0 ;
        }
       r1 = Number ( num1. toString ( ) . replace ( "." , "" ) ) ;
       r2 = Number ( num2. toString ( ) . replace ( "." , "" ) ) ;
        return   ( r1 / r2 ) * Math. pow ( 10 , t2 - t1 ) ;
     }
    
     function  accMul ( num1 , num2 ) {
        var  m = 0 , s1 = num1. toString ( ) , s2 = num2. toString ( ) ;  
     try { m += s1. split ( "." ) [ 1 ] . length } catch ( e ) { } ;
     try { m += s2. split ( "." ) [ 1 ] . length } catch ( e ) { } ;
     return  Number ( s1. replace ( "." , "" ) ) * Number ( s2. replace ( "." , "" ) ) / Math. pow ( 10 , m ) ;
     }
    
   </ script >
  
    <script>
    document.write("使用js原生态方法");
    document.write("<br/> 1.01 + 1.02 ="+(1.01 + 1.02));
    document.write("<br/> 1.01 - 1.02 ="+(1.01 - 1.02));
    document.write("<br/> 0.000001 / 0.0001 ="+(0.000001 / 0.0001));
    document.write("<br/> 0.012345 * 0.000001 ="+(0.012345 * 0.000001));
    document.write("<br/><hr/>");
    document.write("<br/>使用自定义方法");
    document.write("<br/> 1.01 + 1.02 ="+accAdd(1.01,1.02));
    document.write("<br/> 1.01 - 1.02 ="+accSub(1.01,1.02));
    document.write("<br/> 0.000001 / 0.0001 ="+accDiv(0.000001,0.0001));
    document.write("<br/> 0.012345 * 0.000001 ="+accMul(0.012345,0.000001));
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值