我们知道在javascript中,所有的数值都是浮点数,遵从IEEE754双精度浮点数标准,在js中我们通常写0,这意味着+0,但是它也意味着是-0,看下面实例:

function c(expression) {console.log(expression);
}
c(-0); // -0
c(-0 === +0); // true
c((-0).toString()); // 0
c( (+0).toString()); // 0
c( -0 < +0 ); //false
c( +0 < -0 ); //false
// 方法一:
/*** [isNegativeZero 判断是否为-0]* @param  {[type]}  num [description]* @return {Boolean}     [description]*/
function isNegativeZero(num) {return num === 0 && (1 / num < 0);
}
console.log(isNegativeZero(-0));// 方法二:
/*** [isNegativeZero 判断是否为-0]* @param  {[type]}  num [description]* @return {Boolean}     [description]*/
function isNegativeZero(num) {if (num !== 0) return false;var obj = {};Object.defineProperty(obj, 'num', { value: -0, configurable: false });console.log(obj);try {// Is num different from z’s previous value? Then throw exception.Object.defineProperty(obj, 'num', { value: num });} catch (e) {return false};return true;
}

JS 区分+0和-0相关推荐

  1. 【Vue学习笔记】尚硅谷Vue2.0+Vue3.0全套教程丨vue.js从入门到精通

    尚硅谷Vue2.0+Vue3.0全套教程丨vue.js从入门到精通 1.Vue核心部分 1.1 Vue简介 1.1.1 Vue是什么? Vue是一套用于构建用户界面的渐进式JavaScript框架. ...

  2. js中:0.1 +0.2不等于0.3的原因

    在项目中对number的数值进行处理的时候,要多加小心,特别是做数据处理的web端,之前有过相关的经验是处理数据的加减运算,展示折线图,但是简单的相加之后得到的不是一个全等的值: 一个最经典的例子: ...

  3. 【以太坊】web3.js的1.0版本和0.2.0版本的安装及区别

    一.前言 博主在安装web3.js的时候,偶然间安装了不同版本的web3.js,API操作也不相同,虽然都能达到目标,但是到底区别在哪呢?网上查找半天并没有人专门总结一下这块,所以今天斗胆总结一下,也 ...

  4. JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后

    Brief 一天有个朋友问我"JS中计算0.7 * 180怎么会等于125.99999999998,坑也太多了吧!"那时我猜测是二进制表示数值时发生round-off error所 ...

  5. js 为什么0.1+0.2不等于0.3

    当程序员在使用浮点数进行计算逻辑处理时,不注意,就可能出现问题, 记住,永远不要直接比较俩个浮点的大小 这个属于数字运算中的精度缺失的问题 在0.1 + 0.2这个式子中,0.1和0.2都是近似表示的 ...

  6. JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后 1

    Brief 一天有个朋友问我"JS中计算0.7 * 180怎么会等于125.99999999998,坑也太多了吧!"那时我猜测是二进制表示数值时发生round-off error所 ...

  7. [js] 如何避免JS浮点运算的精度问题(例:0.1+0.7=0.7999999999999999)

    [js] 如何避免JS浮点运算的精度问题(例:0.1+0.7=0.7999999999999999) function precision(num1,num2){num1Length = num1.t ...

  8. 为什么JS中0.1+0.2 != 0.3

    为什么JS中0.1+0.2 != 0.3 在我曾经的一篇< javascript入门教程 (2) >中,讲到JS中数字运算时,我们提到过一个叫做 数字运算中的精度缺失的问题,当时我们只是简 ...

  9. hook koa web 码云_Doodoo.js 发布 1.1.0,Koa.js+ Nuxt.js 最佳实践

    doodoo.js发布1.1.0 -- 中文最佳实践Node.js Web快速开发框架,支持Koa.js, Express.js中间件.包含多项功能改进,及Bug修复. 更新内容: 1.[新增]新增支 ...

最新文章

  1. 第七届蓝桥杯(国赛)——随意组合-dfs,next_permutation
  2. php引用计数器,PHP 引用计数器 通俗版解释_PHP教程
  3. mysql load 占位符,mysql:用不存在的数据的占位符初始化摘要表
  4. Spring Boot Admin Reference Guide
  5. unity3d 台球源码_unity3D台球游戏源码
  6. python图灵机器人接口_apikey创建接入图灵机器人
  7. gae mysql_国内几大云服务引擎 BAE、SAE 与 GAE 优劣对比
  8. 批量下载网页链接---数据集批量下载
  9. vue-json-editor json编辑器
  10. 微信小程序制作全流程(1)
  11. 女子打扮时尚穿短裙 被8岁儿子指责像二奶
  12. AD2428W手册解读之操作与配置
  13. BilSTM 实体识别_NLP-入门实体命名识别(NER)+Bilstm-CRF模型原理Pytorch代码详解——最全攻略
  14. pta-L2-032 彩虹瓶 (25 分)
  15. 查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t
  16. UE4 对接Steam
  17. The C10K Problem -- 翻译版
  18. 喂~你那里下雪了吗?
  19. 水下机器人二维变速圆周运动的SBL定位EKF滤波仿真分析
  20. 【WY】数据分析 — 空间数据阶段一 :进阶语法 三 —— 空间柱状图

热门文章

  1. 【转载】VLOOKUP函数多条件查询 VLOOKUP三个条件查询
  2. 如何定位在测试中遇到的Bug?
  3. 如何注册域名,获取个人网站网址
  4. chfs http 文件共享服务
  5. 《用微信测试公众号慰问你的好兄弟/姐妹》:用java简单实现微信公众号消息推送(入门且详细且有效)
  6. 左手画方右手画圆代码
  7. Linux中的各种栈:进程栈 线程栈 内核栈 中断栈
  8. div浮动到网页最上层
  9. 纯JS实现懒加载+瀑布流布局
  10. 案例-------ZARA和HM