日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

上一篇的js处理失真数据存在问题换了种方法

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 上一篇的js处理失真数据存在问题换了种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.加法方式

function numAdd(num1: number, num2: number): number{
let baseNum: number, baseNum1: number, baseNum2: number;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
return (num1 * baseNum + num2 * baseNum) / baseNum;
};
2.減法方式

/**
* @param num1被減數
* @param num2減數
*/
function numSub(num1: number, num2: number): number{
let baseNum: number, baseNum1: number, baseNum2: number;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
return (num1 * baseNum - num2 * baseNum) / baseNum;
};

?

例如:numAdd1(283.34,141.67);

function accAddOwn(one,two ,str){
//轉化為字符串
one = ''+one
two = ''+two
str = '+'
//切割成整數部分和小數部分
var oneStr = one.split('.')
var twoStr = two.split('.')
// 處理參數一或二為整數的情況
if(!oneStr[1]){
oneStr[1] = ''
}
if(!twoStr[1]){
twoStr[1] = ''
}
var length=null
//比較小數部分的長度,以確定剝離小數點后放大的倍數
var oneFloatLength = oneStr[1].length
var TwoFloatLength = twoStr[1].length
if(oneFloatLength>TwoFloatLength){
length = oneFloatLength
twoStr[1]=twoStr[1].padEnd(length,'0')
} else if(TwoFloatLength>oneFloatLength){
length = TwoFloatLength
twoStr[1]=oneStr[1].padEnd(length,'0')
} else{
length = TwoFloatLength
}
// 拼接成處理后的數字
var oneBig = oneStr[0]+oneStr[1]
var twoBig = twoStr[0]+twoStr[1]

//根據運算符決定運算后縮小的倍數
var result= null
switch(str){
case '+' :;
case '-' : result = eval(oneBig+str+twoBig)/(10**length)
break;
case '*' : result = eval(oneBig+str+twoBig)/(10**(length*2))
break;
case '/' : result = eval(oneBig+str+twoBig)
}
return result; }

是用decimal.js吧

npm install --save decimal.js

?

// 加法

?

new Decimal(a).add(new Decimal(b))?

?

// 減法

?

new Decimal(a).sub(new Decimal(b))

?

// 乘法

?

new Decimal(a).mul(new Decimal(b))

?

// 除法

?

new Decimal(a).div(new Decimal(b))

?

轉載于:https://www.cnblogs.com/hr-cmbc/p/11332228.html

總結

以上是生活随笔為你收集整理的上一篇的js处理失真数据存在问题换了种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。