Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

lit-decimal

Package Overview
Dependencies
Maintainers
0
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lit-decimal - npm Package Compare versions

Comparing version
1.0.1
to
1.0.2
+23
-21
index.js
//self.BigInt = undefined //模拟IE没有BigInt
var prec = 16
var precPow
var BIG1 = BigInt(Number.MAX_SAFE_INTEGER)
var BIG2 = BigInt(Number.MIN_SAFE_INTEGER)
var BI
if (typeof BigInt === 'undefined') {
//IE没有BigInt,不支持大数。只能模拟一个,6位小数
self.BigInt = function (num) {
BI = function (num) {
if (nInf(num)[1] > 6) num = Number(num.toFixed(6))

@@ -19,8 +18,12 @@ return {

} else {
precPow = BigInt(Math.pow(10, prec))
BI = BigInt
precPow = BI(Math.pow(10, prec))
}
var BIG1 = BI(Number.MAX_SAFE_INTEGER)
var BIG2 = BI(Number.MIN_SAFE_INTEGER)
function Decimal(num, pointN) {
var inf = nInf(num)
this.v = inf[1] > 0 ? BigInt(Math.round(inf[0] * Math.pow(10, inf[1]))) : BigInt(inf[0])
this.v = inf[1] > 0 ? BI(Math.round(inf[0] * Math.pow(10, inf[1]))) : BI(inf[0])
this.pt = inf[1] + (pointN || 0) //小数点位置。比如2表示 this.v/100 才为实际值

@@ -36,3 +39,3 @@ }

function powN(n) {
return BigInt(Math.pow(10, n))
return BI(Math.pow(10, n))
}

@@ -58,4 +61,3 @@

var d2 = new Decimal(num)
var r = d1.v * d2.v
return new Decimal(r, d1.pt + d2.pt)
return new Decimal(d1.v * d2.v, d1.pt + d2.pt)
},

@@ -65,4 +67,3 @@ divide: function (num) {

var d2 = new Decimal(num)
var r = d1.v * precPow / d2.v
return new Decimal(r, prec + d1.pt - d2.pt)
return new Decimal(d1.v * precPow / d2.v, prec + d1.pt - d2.pt)
},

@@ -75,14 +76,15 @@ //还原为Number

var s = v.toString()
if (s.indexOf('object') > -1) s = v.valueOf().toString() //IE
if (s.indexOf('e')) v = Number(s) //科学计数
else {
var zeros = 0
for (var i = s.length - 1; i >= 0; i--) {
if (s[i] === '0') zeros++
else break
}
s = s.substring(0, s.length - zeros)
v = BigInt(s)
pt -= zeros
if (s.indexOf('object') > -1) {
s = v.valueOf().toString() //IE
if (s.indexOf('e'))
return Number(s) / Math.pow(10, pt) //科学计数
}
var zeros = 0
for (var i = s.length - 1; i >= 0; i--) {
if (s[i] === '0') zeros++
else break
}
s = s.substring(0, s.length - zeros)
v = BI(s)
pt -= zeros
}

@@ -89,0 +91,0 @@ return Number(v) / Math.pow(10, pt)

{
"name": "lit-decimal",
"version": "1.0.1",
"version": "1.0.2",
"description": "To fix js number issues, only 1kb. 精简版解决js中由于浮点数精度导致的各种数值不准确的问题。代码极简,压缩后仅1kb左右。",

@@ -5,0 +5,0 @@ "main": "src/index.js",

@@ -20,2 +20,2 @@ # lit-decimal

## 关于IE
对于不支持BigInt的浏览器(如IE),也可以基本支持,多数情况下可得到正确结果。超大数值可能不准,如确有需要可引用:https://www.npmjs.com/package/bigint-polyfill。
对于不支持BigInt的浏览器(如IE),也可以基本支持,多数情况下可得到正确结果。超大数值可能不准,如确有需要可引用:https://www.npmjs.com/package/bigint-polyfill 。