js 实现简单的parseInt和parseFloat
2024-09-07 14:28:20
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
最新文章
- javaweb
- Mirantis OpenStack 8.0 版本大概性分析
- 移动端网站或APP点击后出现闪动或灰色背景(转)
- objective c,copy, mutableCopy区别
- Java-基础练习1
- Unity3D基础学习 加载场景时隐藏物体,点击显示时显示物体
- 通过管道进行线程间通信:字节流。字符流的用法及API类似
- [置顶] 从引爆点的角度看360随身wifi的发展
- CSS3秘笈复习:第六章
- [BZOJ4542] [Hnoi2016] 大数 (莫队)
- C语言网 蓝桥杯 1117K-进制数
- 【bzoj3717】[PA2014]Pakowanie 状压dp
- 输出1到n以内的素数
- 算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)
- 离线安装 Ambari Hadoop
- vim编辑器操作汇总
- mybatis慢查询配置
- MYSQL5.7:几个简单的show语句演示
- scss-@mixin传参
- homestead虚拟机,通过npm下载依赖包和解决运行gulp报错问题 yarn出错问题
热门文章
- Redis分布式锁升级版RedLock及SpringBoot实现
- linux系统权限管理拓展:特殊权限
- 7.DHCP的相关命令
- 故障-因为MAC地址冲突造成的故障
- I - Swap(交换行列是对角线都为1)
- Codeforces Round #625 (Div. 2)
- Codeforces Round #589 (Div. 2) D. Complete Tripartite(模拟)
- Codeforces Round #636 (Div. 3)
- &;#128218;C#/.NET/.NET Core推荐学习书籍(升职加薪,你值得拥有)
- ssh配置方面小实验②