JavaScript 简单计算

parseFloat和Number

parseFloat()并不能进行数据类型转换,

所以对字符串进行parseFloat()是不起作用的,

需要使用Number()进行强制类型转换

但是,如果真正涉及到精度计算,建议用decimal.js

毕竟,js的计算能力在那放着呢~~

一、背景

我们都知道js是有精度问题的,如下图所示:

 在一些金额的计算时,对于精度要求的需要比较精准,所以这个时候,我们是需要特殊进行处理的,所以这个时候就引入了decimal.

二、decimal介绍

decimal.js是使用的二进制来计算的,所以可以更好地实现格化式数学运算,对数字进行高精度处理;使用decimal类型处理数据可以保证数据计算更为精确,还可以节省储存空间。

三、使用

1、npm命令引入decimal.js文件 

$ npm install --save decimal.js
/**  Node.js  */
var Decimal = require('decimal.js')
 
/** ES6 方式 */
import { Decimal } from 'decimal.js'

 2.加减乘除

 const a = 9.99;
 const b = 8.03;
 
 // 加法
 let c = new Decimal(a).add(new Decimal(b)) 
 
 // 减法
 let d = new Decimal(a).sub(new Decimal(b))
 
 // 乘法
 let e = new Decimal(a).mul(new Decimal(b))
    
 // 除法
 let f = new Decimal(a).div(new Decimal(b))

注意:得到的是Decimal对象,需要转换为number类型哦

1:Number():强制转化,如果转换的是字符串,字符串内必须都是有效的数字字符才可以转换,如过有一个不是有效数字,则无法转换,会返回NaN。

    var cur="1adc";
    var str="1";
    console.log(Number(cur));//NaN
    console.log(Number(str));//1

转换布尔类型

console.log(Number(true)); //1
console.log(Number(false)); //0

2:parseInt():非强制转换,从左到右,把找到的有效的数字返回,并且转换为整数。

    var cur="1ad";
    var str="1";
    console.log(parseInt(cur));//1
    console.log(parseInt(str));//1

3: parseFloat():非强制转换,从左到右,把找到的有效的数字返回,转换为小数。

    var cur="1.3ad1.4";
    var str="1.5,2.4";
    console.log(parseFloat(cur));//1.3
    console.log(parseFloat(str));//1.5

注:字符串中有多个数字的时候,parseFloat与parseInt只能转换第一个。

猜你喜欢

转载自blog.csdn.net/lwzhang1101/article/details/129425952