鸿蒙三方库 | harmony-utils之NumberUtil数值判断与转换详解

鸿蒙三方库 | harmony-utils之NumberUtil数值判断与转换详解 前言数值判断和转换在数据校验中非常常用如判断是否整数、是否偶数、字符串转数字等。pura/harmony-utils的NumberUtil封装了数值判断和转换方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、NumberUtil判断核心APINumberUtil提供了以下数值判断方法方法说明返回类型使用场景isNaN(value)是否NaNboolean无效数值isFinite(value)是否有限数boolean有效性检查isInteger(value)是否整数boolean整数判断isSafeInteger(value)是否安全整数boolean安全范围isNumber(value)是否数值boolean类型判断isEven(num)是否偶数boolean奇偶判断isOdd(num)是否奇数boolean奇偶判断toNumber(str)字符串转数字number类型转换1.1 核心特性简洁易用封装复杂逻辑为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃全面覆盖覆盖NaN、有限数、整数、奇偶等判断场景1.2 数值判断对照方法输入结果说明isNaNNaNtrue非数值isFiniteInfinityfalse无限大isInteger3.14false非整数isEven4true偶数isOdd3true奇数二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 数值判断import{NumberUtil}frompura/harmony-utils;Button(数值判断).width(100%).onClick((){try{letisIntNumberUtil.isInteger(3.14);letisInt2NumberUtil.isInteger(5);letisEvenNumberUtil.isEven(4);letisOddNumberUtil.isOdd(3);this.resultisInteger(3.14):${isInt}\nisInteger(5):${isInt2}\nisEven(4):${isEven}\nisOdd(3):${isOdd};}catch(e){this.result异常: e;}})2.3 数值转换Button(数值转换).width(100%).onClick((){try{letnumNumberUtil.toNumber(123);letnanNumberUtil.toNumber(abc);this.resulttoNumber(123):${num}\ntoNumber(abc):${nan};}catch(e){this.result异常: e;}})三、完整页面示例import{NumberUtil}frompura/harmony-utils;EntryComponentstruct NumberJudgeDemo{Stateresult:string;build(){Column({space:12}){Button(数值判断).width(100%).onClick((){this.result整数:${NumberUtil.isInteger(5)}\n偶数:${NumberUtil.isEven(4)}\n奇数:${NumberUtil.isOdd(3)};});Button(数值转换).width(100%).onClick((){this.resulttoNumber(123):${NumberUtil.toNumber(123)}\nisNaN(abc):${NumberUtil.isNaN(NumberUtil.toNumber(abc))};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 输入校验import{NumberUtil,ToastUtil}frompura/harmony-utils;functionvalidateAge(input:string):boolean{letageNumberUtil.toNumber(input);if(NumberUtil.isNaN(age)){ToastUtil.show(请输入有效数字);returnfalse;}if(!NumberUtil.isInteger(age)||age0||age150){ToastUtil.show(请输入有效年龄);returnfalse;}returntrue;}4.2 分页计算functioncalculateTotalPages(total:number,pageSize:number):number{if(!NumberUtil.isInteger(total)||!NumberUtil.isInteger(pageSize)||pageSize0){return0;}returnMath.ceil(total/pageSize);}五、注意事项NaN判断使用isNaN而非直接比较NaN ! NaN安全整数JavaScript安全整数范围为 ±2^53-1toNumber转换失败返回NaN不会抛异常初始化依赖使用前需确保AppUtil.init()已调用浮点精度isInteger对浮点精度敏感0.10.2不是整数六、常见问题Q1: isInteger(0.1 0.2)返回什么返回false因为0.10.20.30000000000000004不是整数。Q2: toNumber(‘123abc’)返回什么返回NaN因为无法完整解析为数字。Q3: isEven对负数有效吗有效isEven(-4)返回true。Q4: isFinite(null)返回什么isFinite(null)返回true因为null会被转为0。总结NumberUtil的数值判断和转换方法为数据校验提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法简化输入校验、类型转换等操作。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。