资讯专栏INFORMATION COLUMN

数字

OBKoro1 / 1706人阅读

摘要:中没有浮点数这种东西,但是你会发现这样一个问题,如下从数学角度来看,你会觉得不可思议,这是为什么这就跟浮点数有关。

在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,这个分水岭。

还有一种方法,Math.round()方法是四舍五入到整数的,以保留两位小数为例,假设一个数为n,求值为(Math.round(n * 100)) / 100 (这种方式是偶然想到的,网上并没有相关的例子,并不知道该方法是否存有缺陷,如有问题,欢迎指出!)

二、浮点数
刚开始接触————浮点数,是学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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101318.html

相关文章

  • 能源行业数字化转型方向与人才培养

    摘要:能源行业数字化转型方向与人才培养大数据微软雅黑全球能源行业数字化转型的使命是实现敏捷能源。微软雅黑油气行业数字化转型聚焦生产服务技术新业务运营人才生态七大重点方向,结合企业发展实际,挖掘数据驱动价值增值的关键点,布局未来。 随着中国能源结构持续大幅优化,清洁低碳化进程不断加快,中国市场蕴含巨大机遇,国内对能源行业的人才需求...

    番茄西红柿 评论0 收藏2637
  • TOP100summit分享实录 | 数字化三支柱:企业数字化转型的众妙之门

    摘要:本文为喜茶喜茶互联网事业部总经理陈霈霖老师分享的数字化三支柱传统企业数字化转型的众妙之门案例实录。在我讲述数字化三支柱之前,我们不妨先来看看喜茶诞生的故事。 showImg(https://segmentfault.com/img/bVblRz3?w=640&h=427); 喜茶凭借「喜茶GO」小程序跻身第七届全球软件案例研究峰会(简称:TOP100summit),为100个技术案例中...

    blair 评论0 收藏0
  • 中国数字产业迎来发展黄金期

    摘要:中国数字产业正在迎来发展黄金期,其最大特点是信息和通信技术和数字基础设施将被各行各业广泛应用,数字技术的创新将给所有产业带来进一步的繁荣,同时能够驱动数字经济和实体经济进一步增长。数字产业的繁荣是新时期经济发展的重要基石。习近平总书记在今年举行的全国网络安全和信息化工作会议上明确指出,要发展数字经济,加快推动数字产业化,这一表述不仅引起强烈共鸣,也预示着中国数字产业发展迎来重大机遇。中国数字...

    voyagelab 评论0 收藏0
  • 告别手写挂号单,医院数字化转型在路上

    摘要:既有还手写挂号单的落后医院,也有已经利用大数据技术介入诊疗过程的高新医院。大数据,开启医院智能之路医院在前两个阶段的数字化转型,主要强调数据的采集与连通。总体来看,当前中国医疗行业的数字化转型仍然以医院的数字化转型居多。近年来,人工智能、区块链、大数据、云计算等新IT技术的迅速发展,不断推进各行各业实现数字化转型。金融业、制造业、零售业……纷纷依托数字化实现行业变革与业务变迁。相对于其他行业...

    silenceboy 评论0 收藏0
  • 华为数字化转型,你为什么就学不会?

    摘要:一引言华为数字化转型的逻辑和方法,看起来似乎并不非常复杂。华为在年提出实现全联接的智能华为,成为行业标杆的数字化转型目标。但是,华为的数字化转型之道真的好学吗其实不然。华为真正提出数字化转型,是在年。一、引言华为数字化转型的逻辑和方法,看起来似乎并不非常复杂。笔者将《华为.数字化转型必修课》课程的主要内容,概括为一个愿景、三大目标、四个基础、五大内容、三大要求、六大案例,用下图来表示: 一个...

    不知名网友 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<