Number系列

Math系列-CSDN博客

数值的表现形式

var y=123e5;    // 12300000

var z=123e-5;   // 0.00123

运算符

指数运算符

onsole.log(2**2);//2的2次方
多个指数运算符连用时,是从最右边开始计算的。
// 相当于 2 ** (3 ** 2)
2 ** 3 ** 2    // 512
let a = 1.5;
a **= 2;// 等同于 a = a * a;
let b = 4;
b **= 3;// 等同于 b = b * b * b;

方法

toString()

转换字符串

var myNumber=128;
myNumber.toString();
// 128   字符串类型

进制转换

var myNumber=128;
myNumber.toString(16);   // 返回 80  16进制
myNumber.toString(8);    // 返回 200 8进制
myNumber.toString(2);    // 返回 10000000  2进制

(16777215).toString(16)==='ffffff'

toFixed()

保留小数

var a=123;
b=a.toFixed(2); 
// b="123.00"

四舍五入

var num =2.446242342;
num = num.toFixed(2);  
// 输出结果为 2.45

isInteger()

判断数值是否为整数

Number.isInteger(25) // true
Number.isInteger(25.1) // false
Number.isInteger(25.0) // true
Number.isInteger() // false
Number.isInteger(null) // false
Number.isInteger('15') // false
Number.isInteger(true) // false

parseInt

取整

parseInt(10.2)  //=====>10

快捷

~~5.25 //5.0     
~~2.3  //2

toPrecision

指定精度

123.toPrecision(2);

//"1.2e+2"

123 中,3会由于精度限制消失:

数值格式化

number.toLocaleString(locales, options)

locales属性

locales

可选,格式化对象,可以是:

ar-SA 阿拉伯 (沙特阿拉伯)

bn-BD 孟加拉语(孟加拉国)

bn-IN 孟加拉国(印度)

cs-CZ 捷克语(捷克共和国)

da-DK 丹麦语(丹麦)

de-AT 奥地利德语

de-CH "瑞士"德语

de-DE 标准德语

el-GR 现代希腊语

en-AU 澳大利亚英语

en-CA 加拿大英语

en-GB 英式英语

en-IE 爱尔兰英语

en-IN 印度英语

en-NZ 新西兰英语

en-US 美国英语

en-ZA 英语(南非)

es-AR 阿根廷 西班牙语

es-CL 智利 西班牙语

es-CO 哥伦比亚西班牙语

es-ES 卡斯蒂利亚西班牙语(在西班牙中北部使用)

es-MX 墨西哥西班牙语

es-US 式西班牙语

fi-FI 芬兰语(芬兰)

fr-BE 比利时法语

fr-CA 加拿大法语

fr-CH "瑞士"法语

fr-FR 标准法语(在法国)

he-IL 希伯来语(以色列)

hi-IN 印地语(印度)

hu-HU 匈牙利语(匈牙利)

id-ID 印度尼西亚语(印度尼西亚语)

it-CH "瑞士"意大利语

it-IT 标准意大利语(在意大利使用)

ja-JP 日语(日本)

ko-KR 韩语(韩国)

nl-BE 比利时荷兰语

nl-NL 标准荷兰语

no-NO 挪威语(挪威)

pl-PL 波兰语(波兰)

pt-BR 巴西葡萄牙语

pt-PT 欧洲葡萄牙语

ro-RO 罗马尼亚语(罗马尼亚)

ru-RU 俄语(俄罗斯联邦)

sk-SK 斯洛伐克语(斯洛伐克)

sv-SE 瑞典语(瑞典)

ta-IN 印度泰米尔语

ta-LK 斯里兰卡泰米尔语

th-TH 泰语(泰国)

tr-TR 土耳其语(土耳其)

zh-CN 中国大陆,简体字

zh-HK 香港地区,繁体字

zh-TW 台湾地区,繁体字

options属性

options

可选,可以是:

  • "decimal"用于纯数字格式;
  • "currency"用于货币格式;
  • "percent"用于百分比格式;
  • "unit"用于单位格式

style

  • decimal 表示纯数字 默认值
  • percent 示百分比格式
  • currency 表示货币 对于设置style的值为currency时,需要配合currency属性的设置,如果单独使用会报错
const num = 2444222;
console.log(num.toLocaleString('zh', {style: 'decimal'})); 
// 2,444,222
console.log(num.toLocaleString('zh', {style: 'percent'})); 
// 244,422,200%
console.log(num.toLocaleString('zh', {style: 'currency'}));
// 报错 Uncaught TypeError: Currency code is required with currency style.

currency

只有在style的值是“currency”的时候才会生效

currency属性用来设置货币格式化中使用的货币符号

可能的值是ISO的货币代码 ,"CNY"是人民币,"USD" 表示美元,"EUR"表示欧元

const num = 2444222;
console.log(num.toLocaleString('zh', {style: 'currency', currency: 'CNY'}));  
// ¥2,444,222.00

currencyDisplay

只有在style的值是“currency”的时候才会生效

currencyDisplay属性用来设置货币格式化中显式货币

可能值有:symbol表示使用本地化的货币名称,code使用国际标准组织货币代码, name表示使用本地化的货币名称。默认值是symbol

const num = 2444222;
num.toLocaleString('zh', { style: 'currency', currency: 'cny', currencyDisplay: 'code' })
// CNY 2,444,222.00
num.toLocaleString('zh', { style: 'currency', currency: 'cny', currencyDisplay: 'name' })
// 2,444,222.00 人民币

useGrouping

分隔符

const num = 2333.3;
//如果不想有分隔符,可以指定useGrouping为false
num.toLocaleString('zh', { minimumIntegerDigits: 5, useGrouping: false })   
//02333.3
num.toLocaleString('zh', { minimumFractionDigits: 2, useGrouping: false }); 
//2333.30

minimumIntegerDigits

用来指定使用的整数数字的最小数目.可能的值是从1到21,默认值是1。

意思是整数位置的位数

const num = 2333.3;
//如果不想有分隔符,可以指定useGrouping为false
num.toLocaleString('zh', { minimumIntegerDigits: 5, useGrouping: false });    
//02333.3

minimumFractionDigits

用来指定使用的小数位数的最小数目.

可能的值是从0到20;默认为普通的数字和百分比格式为0。

const num = 2333.3;
//如果不想有分隔符,可以指定useGrouping为false
num.toLocaleString('zh', { minimumFractionDigits: 2, useGrouping: false }); 
//2333.30

maximumFractionDigits

用来指定使用的小数位数的最大数目。可能的值是从0到20。

const num2 = 666.666;
num2.toLocaleString('zh', { maximumFractionDigits: 2, useGrouping: false })
//666.67

minimumSignificantDigits

控制使用的有效数字的最小数目。可能的值是从1到21;默认值是1。

用来控制数字的有效数字的位数的。只要设置了这一组属性,上面那一组属性全部忽略不算

const num = 1234.5;
num.toLocaleString('zh', { minimumSignificantDigits: 6, useGrouping: false });      
//1234.50

maximumSignificantDigits

控制使用的有效数字的最大数量。可能的值是从1到21;

用来控制数字的有效数字的位数的。只要设置了这一组属性,上面那一组属性全部忽略不算

const num = 1234.5;
num.toLocaleString('zh', { maximumSignificantDigits: 4, useGrouping: false });      
//1235

实例

阿拉伯数字转成中文数字

//10以内 
let num = 9
num.toLocaleString('zh-u-nu-hanidec') // "九"


//100以内
let transChinese = (num) => {
    num = Number(num);
    let upperCaseNumber = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
    let length = String(num).length;
    if (length == 1) {
        return upperCaseNumber[num];
    } else if (length == 2) {
        if (num == 10) {
            return upperCaseNumber[num];
        } else if (num > 10 && num < 20) {
            return '十' + upperCaseNumber[String(num).charAt(1)];
        } else {
            return upperCaseNumber[String(num).charAt(0)] + '十' + upperCaseNumber[String(num).charAt(1)].replace('零', '');
        }
    }
}
transChinese (99)   // 九十九

1000000==>1,000,000

let num1 = 1000000;
let text1 = num1.toLocaleString();                
//输出 1,000,000
 
// 使用特定的语言环境将数字格式化为字符串
let num2 = 1000000;
let text2 = num2.toLocaleString("fi-FI");       
//输出 1 000 000

货币

let num = 1000000;

//人民币
num.toLocaleString("zh-CN", {style:"currency", currency:"CNY"});    
//输出 ¥1,000,000.00

//美元
num.toLocaleString("en-US", {style:"currency", currency:"USD"});     
//输出 $1,000,000.00

//欧元
num.toLocaleString("en-GB", {style:"currency", currency:"EUR"});    
//输出 €1,000,000.00

//日元
num.toLocaleString("ja-JP", {style:"currency", currency:"JPY"});
//输出 ¥1,000,000

问题

小数0.1的加法

S中关于0.1+0.2 !==0.3 和0.1+0.7!==0.8的问题

在js中,0.1+0.2不会等于0.3,而是等于:

在js中,0.1+0.7不会等于0.8,而是等于:

JS中数字运算时,有一个叫做 数字运算中的精度缺失的问题

解决

方法一

最简单的就是先把0.1和0.2换成别的数字(因为在js中只有这两个数相加有bug,例如:1.1+1.2不会有问题),所以先让0.1和0.2分别乘以10,求和之后再除以10 ,则不会有问题:

(0.1*10+0.2*10)/10 ===0.3

方法二

可能很多小伙伴都忘记了js的Number对象有一个保留小数位数的方法:toFixed();传入一个需要保留的位数就OK:

parseFloat((0.1+0.2).toFixed(10)) ===0.3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值