开天辟地 HarmonyOS(鸿蒙) - ArkTS 基础: number

源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd

开天辟地 HarmonyOS(鸿蒙) - ArkTS 基础: number

示例如下:

pages\arkts\basic\Number.ets

import { TitleBar, MyLog } from '../../TitleBar';

@Entry
@Component
struct NumberDemo {
  build() {
    Column() {
      TitleBar()
      Text("代码示例结合 HiLog 日志一起看")
    }
  }
}


{
  // 将指定类型的数据转换为 number 类型
  MyLog.d(`${Number("100")}, ${Number(true)}, ${Number({})}, ${Number([])}`); // 100, 1, NaN, 0

  // number 类型的最大安全整数为 Number.MAX_SAFE_INTEGER,如果超过了此值就会失去精度
  // bigint 类型可以精确表示任意大的整数,不会失去精度,在数字后面加个 n 即代表此数字为 bigint 类型
  let a: number = 9999999999999999999999999999999999999
  let b: bigint = 9999999999999999999999999999999999999n
  MyLog.d(`${typeof a}, ${a}`) // number, 1e+37
  MyLog.d(`${typeof b}, ${b}`) // bigint, 9999999999999999999999999999999999999

  // 将数字格式化为字符串
  MyLog.d(1234.56789.toString()); // 1234.56789
  MyLog.d((32).toString(16)); // 20
  MyLog.d(1234.56789.toFixed(2)); // 1234.57
  let formatWithCommas = (num: number): string => {
    return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  }
  MyLog.d(formatWithCommas(123456789)); // 123,456,789

  // 二进制
  MyLog.d(`${0b10}`); // 2
  // 八进制
  MyLog.d(`${0o10}`); // 8
  // 十六进制
  MyLog.d(`${0x10}`); // 16

  // 表示 1 与大于 1 的最小浮点数之间的差(大于 0 的最小浮点数)
  MyLog.d(`${Number.EPSILON}`); // 2.220446049250313e-16
  // 大于 0 的最小数
  MyLog.d(`${Number.MIN_VALUE}`); // 5e-324
  // 最大数
  MyLog.d(`${Number.MAX_VALUE}`); // 1.7976931348623157e+308
  // 精确的最小整数(非科学计数法)
  MyLog.d(`${Number.MIN_SAFE_INTEGER}`); // -9007199254740991
  // 精确的最大整数(非科学计数法)
  MyLog.d(`${Number.MAX_SAFE_INTEGER}`); // 9007199254740991
  // 无限小
  MyLog.d(`${Number.NEGATIVE_INFINITY}`); // -Infinity
  // 无限大
  MyLog.d(`${Number.POSITIVE_INFINITY}`); // Infinity

  // 判断一个数是否是有限的
  MyLog.d(`${Number.isFinite(1)}`); // true
  MyLog.d(`${Number.isFinite(0.1)}`); // true
  MyLog.d(`${Number.isFinite(NaN)}`); // false
  MyLog.d(`${Number.isFinite(Infinity)}`); // false
  MyLog.d(`${Number.isFinite(-Infinity)}`); // false

  // 判断一个数据是否是 NaN(not a number)
  MyLog.d(`${Number.isNaN(NaN)}`); // true
  MyLog.d(`${Number.isNaN(100)}`); // false
  MyLog.d(`${Number.isNaN("abc")}`); // false

  // 字符串转数字
  MyLog.d(`${Number.parseInt("100")}`); // 100
  MyLog.d(`${Number.parseInt("100", 10)}`); // 100
  MyLog.d(`${Number.parseInt("100", 16)}`); // 256
  MyLog.d(`${Number.parseFloat("123.123")}`); // 123.123

  // 判断一个数是否是整数
  MyLog.d(`${Number.isInteger(123)}`); // true
  // 判断一个数是否是精确整数(非科学计数法)
  MyLog.d(`${Number.isSafeInteger(123)}`); // true

  // 取整
  MyLog.d(`${Math.trunc(11.7)}`); // 11
  MyLog.d(`${Math.trunc(-11.7)}`); // -11

  // 向上取整
  MyLog.d(`${Math.ceil(11.7)}`); // 12
  MyLog.d(`${Math.ceil(-11.7)}`); // -11

  // 向下取整
  MyLog.d(`${Math.floor(11.7)}`); // 11
  MyLog.d(`${Math.floor(-11.7)}`); // -12

  // 幂运算符 **
  // 下面的例子用于计算 2 的 10 次方
  MyLog.d(`${2 ** 10}`) // 1024

  // 支持 _ 数字分隔符,以便提高可读性
  let billion = 1_000_000_000; // 十进制
  let hex = 0x123_abc; // 十六进制
  let binary = 0b1010_0001; // 二进制
}

源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd

posted @ 2025-02-05 13:26  webabcd  阅读(196)  评论(0)    收藏  举报