JavaScript 简单计算
创始人
2024-05-31 14:36:15
0

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));//NaNconsole.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));//1console.log(parseInt(str));//1

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

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

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

相关内容

热门资讯

与秩序有关的成语 与秩序有关的成语井井有条 有条不紊 有条有理 鳞次栉比 按部就班 匪匪翼翼 井然有序 鱼贯而入 一板...
葵良 人生一课故事梗概 葵良 人生一课故事梗概急急急!~ ~谁能给我葵良的人生一课的故事梗概?本文作者主要以回忆形式讲述了在...
杨幂吐槽德云社票难抢,网友对此... 杨幂吐槽德云社票难抢,网友对此有何评价?网友称,杨幂这么说有点夸张,她其实并不用抢票,只是为了说明德...
如何礼貌的催人办事? 如何礼貌的催人办事?如何礼貌的催人办事情的话,可能还不好意思问的话,那就。变相的。隐约的透露一下。表...
用“拖鞋,胖乎乎,奇妙”三个词... 用“拖鞋,胖乎乎,奇妙”三个词写一段故事,150个字左右。让我参考一下你们的思路和题材,在线等,速度...
卡桑旅称向以色列发射数枚火箭弹 当地时间7月1日晚,巴勒斯坦伊斯兰抵抗运动(哈马斯)下属武装组织“卡桑旅”表示,该组织从加沙南部汗尤...
中粮可口可乐向榕江从江运送逾2... 转自:贵州日报6月24日,中粮可口可乐贵州公司向榕江县运送饮用水。 本报讯 连日来,贵州省黔...
暮光之城4简介 暮光之城4简介暮光之城4分为三个部分,分别是贝拉,雅各布,贝拉。一 贝拉与爱德华结婚,度蜜月。二...
光耀长河 薪火永继 转自:贵州日报 在中国共产党成立104周年之际,一场场庄重而温暖的仪式在全国各地组织开展——颁...
浙江华海药业股份有限公司202... 证券代码:600521 证券简称:华海药业 公告编号:临2025-078号债券代码:110076 ...