/**
* 加法运算,避免数据相加小数点后产生多位数和计算精度损失。
*
* @param num1加数1 | num2加数2
*/
export function numAdd (num1, num2) {
var baseNum, baseNum1, baseNum2
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
}
/**
* 减法运算,避免数据相减小数点后产生多位数和计算精度损失。
*
* @param num1被减数 | num2减数
*/
export function numSub (num1, num2) {
var baseNum, baseNum1, baseNum2
var precision// 精度
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))
precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2
return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision)
}
/**
* 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。
*
* @param num1被乘数 | num2乘数
*/
export function numMulti (num1, num2) {
var baseNum = 0
try {
baseNum += num1.toString().split(".")[1].length
} catch (e) { console.log(e) }
try {
baseNum += num2.toString().split(".")[1].length
} catch (e) {
console.log(e)
}
return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum)
}
/**
* 除法运算,避免数据相除小数点后产生多位数和计算精度损失。
*
* @param num1被除数 | num2除数
*/
export function numDiv (num1, num2) {
var baseNum1 = 0, baseNum2 = 0;
var baseNum3, baseNum4;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
with (Math) {
baseNum3 = Number(num1.toString().replace(".", ""));
baseNum4 = Number(num2.toString().replace(".", ""));
return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
}
};
浮点运算加减乘除
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 福哥答案2020-08-10:浮点数=符号位+阶码+尾数,阶码加1就是浮点数的2倍值。 代码用golang编写,如...
- 转自解决方法思路:将小数化成整数后再作运算。 具体代码如下: 加法运算 减法运算 乘法运算 除法运算