数字

栏目: JavaScript · 发布时间: 5年前

内容简介:在JavaScript只有一种数值类型number,它包括整数和带小数的十进制数(这里的整数有点特殊,指的是没有小数的十进制数,所以1.0等同于整数1)。一、语法1、js中的小数,多余的零可以省略

在JavaScript只有一种数值类型number,它包括整数和带小数的十进制数(这里的整数有点特殊,指的是没有小数的十进制数,所以1.0等同于整数1)。

一、语法

1、js中的小数,多余的零可以省略

let a = .1;  // 默认为0.1
let b = 1.;  // 默认为1
let c = 1.000; // 默认为1

注意:小数理的的小数点.很重要哦,一定要引起重视,待会再探究。

2、toFixed()方法

42.toFixed(2);  // SynataxError 语法错误
(42).toFixed(2); // 42.00
0.42.toFixed(2); // 0.42
42..toFixed(2); // 42.00

前面有提到小数的小数点很重要,对于.运算符,它是一个有效的数字字符,会被 优先识别为数字常量的一部分 ,然后才是对象属性访问运算符。所以第一条语句会被认为是语法错误。

关于toFixed()方法,其实它是有误差,减少误差可参考 链接描述

1.335.toFixed(2);  // 1.33 有误差
0.155.toFixed(2);  // 0.15 有误差
//这并不是理想状态下的四舍五入,还跟浏览器有关,IE浏览器的精度比其他浏览器高,
//有人说toFixed()是四舍六入五成双,至于到底是什么样的,我也不太清楚。。。
//但是,<=4的和>=6的小数都没有问题,最大的问题在5,这个分水岭。

二、浮点数

刚开始接触————浮点数,是学 C语言 的时候,那时候的我,只是简单以为浮点数就是多位小数,而双精度就是小数点后保留两位小数,但现在我不再把浮点数想得如此简单了,里面有大学问。

js中没有浮点数这种东西,但是你会发现这样一个问题,如下:

0.1 + 0.2 === 0.3;  // false
0.1 + 0.2 == 0.3;  // false

从数学角度来看,你会觉得不可思议,这是为什么?这就跟浮点数有关。

这是因为计算机中存储数据并不简单,计算机硬件中没有小数这个概念,而且它只能以二进制的形式存储数据,整数还好,整数能正常的运算,但一遇到小数,就会出现很多无法理解的问题。

那什么是浮点数呢,到现在我也只能理解皮毛,根据根据国际标准IEEE 754,任意一个浮点数都可以写成如下形式:

数字

遇到小数运算时,先转化为二进制,运算后,再转化成十进制。

其中,有些小数并不是能准确地化成二进制数,但是一个数值的存储空间是有限制的,这时候就会舍弃,就存在着误差,所以小数相加会存在误差。

要想解决误差问题,放大10*两者中小数点后位数最多的位数n(可以比n大),如下

0.1 + 0.2222  // 结果为0.32220000000000004 ,有误差
// 计算 0.1 + 0.2222 的值  0.1小数点后1位,0.2222小数点后4位,因此最少要放大10^4倍
(0.1 *  10000 + 0.2222 * 10000) / 10000  // 结果为0.3222

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计与分析导论

算法设计与分析导论

R.C.T.Lee (李家同)、S.S.Tseng、R.C.Chang、Y.T.Tsai / 王卫东 / 机械工业 / 2008-1 / 49.00元

本书在介绍算法时,重点介绍用干设计算法的策略.非常与众不同。书中介绍了剪枝搜索、分摊分析、随机算法、在线算法以及多项式近似方案等相对较新的思想和众多基于分摊分析新开发的算法,每个算法都与实例一起加以介绍,而且每个例子都利用图进行详细解释。此外,本书还提供了超过400幅图来帮助初学者理解。本书适合作为高等院校算法设计与分析课程的高年级本科生和低年级研究生的教材,也可供相美科技人员和专业人七参考使用。一起来看看 《算法设计与分析导论》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码