一个人开发一个产品,小程序从0到1,第7章 数值类型

小程序定义变量时,不用指定数据类型,根据值进行类型推断即可。推断结果为数据类型number、string、boolean、object、array、function和regexp、date八种中的其中一种。有编程经验的同志应该知道,没编程经验的同学要知道,在很多编程语言中,原始数据类型是不能调用方法的。

如果要支持调用方法,需对框架进行改良,小程序改良之后,支持在调用方法时自动通过Number()等构造一个临时对象,而访问的方法均来自这个临时对象;undefined 和 null 没有对应的包装对象,所以访问他们的方法会报错。

区分不同数据类型,可通过constructor属性实现,也可通过可typeof进行判断,但typeof只能用于区分number、string和boolean类型。

7.1  数值类型number

number包括整数和小数两种数值,可调用方法如下。

toString(radix):数值转为字符串。radix省略时,使用基数10(十进制),radix为2、8、16时,显示二、八、十六进制值的字符串;

valueOf():获取Number对象的原始值,隐式调用;

toLocaleString(x):数值x转为字符串并进行数字本地格式化,默认zh-cn;

toFixed(x):数值保留小数点后指定位数并转换为字符串;

toExponential(x):数值以指数形式表示,保留小数点后指定位数并转换为字符串;

toPrecision(x):指数或点形式表示数值,保留指定位数并转换为字符串。

//number数值类型使用示例
  onLoad: function () {
    let i = 1680.506;
    console.log('变量值为:%f,数据量类型是:%s', i, typeof i);
    console.log('判断为Number的结果是:', Number==i.constructor)
    console.log('转为字符串类型结果是:', typeof i.toString());
    console.log('转为8进制值为:', i.toString(8));
    console.log('本地化格式结果:', i.toLocaleString());
    console.log('保留2位小数,四舍五入:', i.toFixed(2));
    console.log('指数形式:', i.toExponential());
    console.log('保留3位小数,四舍五入:', i.toExponential(3));
    console.log('保留位数,四舍五入:', i.toPrecision(3));
  }

输出结果

变量值为:1680.506,数据量类型是:number
判断为Number的结果是: true
转为字符串类型结果是: string
转为8进制值为: 3220.40304467227433
本地化格式结果: 1,680.506
保留2位小数,四舍五入: 1680.51
指数形式: 1.680506e+3
保留3位小数,四舍五入: 1.681e+3
保留位数,四舍五入: 1.68e+3

转为数值:可用Number()把其他数据类型转为数值型,如果结果非数值,返回NaN。还可用内置方法parseInt(),将其他数据类型转为整数, 可用parseFloat()转为浮点数,转换失败时也是返回NaN。

//数值类型转换使用示例
  onLoad: function(options) {
    let s = "1210.25";
    let n = Number(s);
    console.log('字符串"%s",转为数值类型是:%s', s, typeof n);
    console.log('非数值转换为数值,结果为:%s', Number('abc'));
    let i = parseInt('69855');
    console.log('"69855"字符串转为整数,结果是:%d', i);
    let f = parseFloat("pf");
    console.log('"pf"字符串转为浮点数,结果是:%f', f);
  }

输出结果

字符串"1210.25",转为数值类型是:number
非数值转换为数值,结果为:NaN
"69855"字符串转为整数,结果是:69855
"pf"字符串转为浮点数,结果是:NaN

骚年在编程的过程中,经常遇到的数据类型除了数值之外,还有字符串。有关字符串的详细内容,请见下一张杰。

原文地址:https://www.cnblogs.com/halfcode/p/12538660.html