zoukankan      html  css  js  c++  java
  • js 实现简单的parseInt和parseFloat

    function myParseInt(str: string): number {
      let result = NaN;
      for (let i = 0; i < str.length; i++) {
        const dec: number = str.charCodeAt(i);
        if (dec < 48 || dec > 57) break;
        if(isNaN(result)) result = 0;
    
        const value = dec - 48;
        result = result * 10 + value;
      }
      return result;
    }
    
    function myParseFloat(str: string): number {
      let result = NaN;
      let isDecimal = false; // 小数点
      let decimalIndex = 0; // 小数点第几位
      const N = 1000;
      for (let i = 0; i < str.length; i++) {
        const dec: number = str.charCodeAt(i);
        const isPoint = dec === 46;
    
        if (isPoint && isDecimal) {
          // 再次遇到小数点直接返回
          break;
        } else if (isPoint) {
          isDecimal = true;
          continue;
        }
    
        if (dec < 48 || dec > 57) break;
        if (isNaN(result)) result = 0;
    
        const value = dec - 48;
    
        if (!isDecimal) {
          result = result * 10 + value;
        } else {
          decimalIndex++;
          result = (result * N + (value / 10 ** decimalIndex) * N) / N;
        }
      }
      return result;
    }
    
    console.log(myParseInt("12.22")); // 12
    console.log(myParseFloat("0.22")); // 0.22
    
  • 相关阅读:
    学习方法类
    CSS中height:100%和height:inherit的异同
    DOM怎么添加、移除、移动、复制、创建和查找节点
    CommonJS,AMD,CMD和ES6的对比
    vue-admin
    XSS 和 CSRF简述及预防措施
    js的执行机制
    重绘和回流
    什么是BFC?
    v-model实现原理
  • 原文地址:https://www.cnblogs.com/ajanuw/p/14113139.html
Copyright © 2011-2022 走看看