当前位置:网站首页>解决js计算精度问题
解决js计算精度问题
2022-04-22 05:47:00 【Lora_0925】
// 除以
accDiv(arg1, arg2) {
let t1 = 0,
t2 = 0,
r1, r2;
try {
t1 = arg1.toString().split(".")[1].length
} catch (e) {}
try {
t2 = arg2.toString().split(".")[1].length
} catch (e) {};
r1 = Number(arg1.toString().replace(".", ""))
r2 = Number(arg2.toString().replace(".", ""))
return (r1 / r2) * Math.pow(10, t2 - t1);
},
// 乘以
accMul(arg1, arg2) {
let m = 0,
s1 = arg1.toString(),
s2 = arg2.toString();
try {
m += s1.split(".")[1].length
} catch (e) {}
try {
m += s2.split(".")[1].length
} catch (e) {}
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
},
// 减
accSub(arg1, arg2) {
let r1, r2, m, n;
try {
r1 = arg1.toString().split(".")[1].length
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2));
//动态控制精度长度
n = (r1 >= r2) ? r1 : r2;
return ((arg1 * m - arg2 * m) / m).toFixed(n);
},
//加法
accAdd(arg1, arg2) {
let r1, r2, m;
try {
r1 = arg1.toString().split(".")[1].length
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2))
return (arg1 * m + arg2 * m) / m
}
版权声明
本文为[Lora_0925]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Lora_0925/article/details/122840861
边栏推荐
猜你喜欢
随机推荐
两指针相加?(合法or不合法)
Automatically obtain the specified path folder and delete the folder and sub files
watch 深度监听模式
Can data frame, remote frame, error frame, and error reconnection
常见面试问题 - 2(计算机网络)
Redis指令
el-input-number 如何设置初始值为空
Daily learning records - reading custom data sets
Intel SGX初步学习理解笔记(持续更新)
Custom display of C catch error message
I/O多路复用(select/poll/epoll)
指针传参传值等的几种使用实例
Single and multi-channel image contrast processing
常见面试问题 - 1(非技术)
Calibration principle of robot tool coordinate system
数据总线bus实现兄弟组件之间的通信
机器人抓取物体原理初步
Opencv image enhancement
判断完全二叉树
String类intern()方法解析









