记一次 String(-0) 引起的 bug

news/2024/10/23 7:24:20/

-0 在js中是存在的,可以通过 var a = -0 得到,也可以通过 parseInt(-0.1) 得到

但是存在 -0 === 0, String(-0) === String(0) 的情况

起初,业务中存在一个 给数字转换成 千分位数字字符串的方法

// numInt 为传入的值, 如 1035
let integer = parseInt(numInt)
let integerFormat = String(integer).replace(/\B(?=(\d{3})+$)/g, ',')

但是,遇到 -0.04 就出问题了
在这里插入图片描述
parseInt(-0.04) => -0
但是 String(-0) 就变成了 ‘0’

引申出一个问题,如何判断一个数字是 -0 ?

Math 上有一个 sign()
Math.sign(mdn)
在这里插入图片描述
我们可以得到 Math.sign(-0) 为 -0,好像可以了
假设我们写了如下代码

let integer = parseInt(numInt)
let integerFormat = ''
if(Math.sign(integer) === -0){integerFormat = '-0'
} else {integerFormat = String(integer).replace(/\B(?=(\d{3})+$)/g, ',')
}

好像没问题,但是由于 -0 === 0
在这里插入图片描述
可以采用如下方法:

let integer = parseInt(numInt)
// 判断是 -0
if (integer === 0 && (1 / integer < 0)) {integerFormat = '-0'
} else {...
}

http://www.ppmy.cn/news/165067.html

相关文章

I420转NV21

//I420 To NV21 void I420ToNV21(u8 *pSrcData, u16 wWidth, u16 wHeight, u8 *pDstData[]) {u64 dwSize wWidth * wHeight, i, j;u8 *pSrcData_U pSrcData dwSize;u8 *pSrcData_V pSrcData dwSize (dwSize >> 2);memcpy(pDstData[0], pSrcData, dwSize);//y分量fo…

DELL U2410显示器发红的解决方案

很简单, 换成DVI线连接. 不要用display port

TQ2440 USB驱动

TQ2440 USB驱动是官方提供的一款USB驱动&#xff0c;本站收集提供高速下载&#xff0c;用于解决USB接口不能正常识别&#xff0c;无法正常使用的问题&#xff0c;本动适用于&#xff1a;Windows XP / Windows 7 / Windows 8 / Windows 10 32/64位操作系统。有需要的朋友可以来本…

dvi黑屏解决方法_DVI线导致黑屏故障处理全攻略

笔记本如果遇到黑屏花屏的现象&#xff0c;相信朋友们都会想着把笔记本交给商家去维修&#xff0c;如果尚在保修期还好&#xff0c;过保了问题就大了。笔记本属于精度很高的产品&#xff0c;硬件损坏之后的更换是相当昂贵的。特别是主板损坏&#xff0c;商家的报价大约是2000-3…

dvi黑屏解决方法_DVI线导致黑屏故障处理全攻略分享

今天来聊聊一篇关于DVI线导致黑屏故障处理全攻略分享的文章,现在就为大家来简单介绍下DVI线导致黑屏故障处理全攻略分享,希望对各位小伙伴们有所帮助。 电脑黑屏是一个很常见的故障&#xff0c;引起这个故障的原因也是多种的&#xff0c;但是其中的一个原因是因DVI线导致显示器…

[嵌入式] 重温Mini2440(二)移植Linux-4.9.270

重温Mini2440&#xff08;二&#xff09;移植Linux-4.9.270 一. 获取Linux内核二. 安装编译工具三. 配置内核四. 修改驱动五. 生成uImage六. U-Boot引导内核 一. 获取Linux内核 在The Linux Kernel Archives可以下载到最新的Linux内核 此文使用的版本是&#xff1a; longterm:…

让mini2440成为U盘之linux gadget driver

如何使mini2440开发板插上电脑能被电脑识别为U盘,并能往里面拷贝东西呢? 这里就要学习USB gadget driver,USB gadget driver主要涉及s3c2440_udc.ko和g_file_storage.ko两个模块。 进入linux2.6.32.2内核编译步骤如下: 1)在device drivers中选择USB support 2)进入US…

linux集显驱动程序,Ubuntu14.04安装intel集显驱动

Made with Remarkable! Ubuntu14.04安装intel集显驱动 标签(空格分隔)&#xff1a; ubuntu linux 驱动安装 1.查看本机显卡型号 使用lspci命令来获取PCI接口硬件信息 oo-pc:~$ lspci | grep -i vga 00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Process…