zoukankan      html  css  js  c++  java
  • JavaScript浮点运算,小数点精度


    math.js
    JavaScript浮点运算,小数点精度

    
    // JavaScript Document
    //数学函数
    // 浮点数加法运算
    function floatAdd(arg1, arg2) {
    	var 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;
    }
    
    // 浮点数减法运算
    function floatSub(arg1, arg2) {
    	var 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);
    }
    
    // 浮点数乘法运算
    function floatMul(arg1, arg2) {    
    	var 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);
    }
    
    // 浮点数除法运算
    function floatDiv(arg1, arg2) {
    	var t1 = 0, t2 = 0, r1, r2;    
    	try {
    		t1 = arg1.toString().split(".")[1].length;
    	} catch(e) {}
    	try {
    		t2 = arg2.toString().split(".")[1].length;
    	} catch(e) {}
    	with(Math) {
    		r1 = Number(arg1.toString().replace(".", ""));
    		r2 = Number(arg2.toString().replace(".", ""));
    		return (r1 / r2) * pow(10, t2 - t1);
    	}
    }
    // 设置数值精度
    function setScale(value, scale, roundingMode) {
    	if (roundingMode.toLowerCase() == "roundhalfup") {
    		return (Math.round(value * Math.pow(10, scale)) / Math.pow(10, scale)).toFixed(scale);
    	} else if (roundingMode.toLowerCase() == "roundup") {
    		return (Math.ceil(value * Math.pow(10, scale)) / Math.pow(10, scale)).toFixed(scale);
    	} else {
    		return (Math.floor(value * Math.pow(10, scale)) / Math.pow(10, scale)).toFixed(scale);
    	}
    }	
    	
    
    
  • 相关阅读:
    route命令基本使用
    Linux提权(capabilities)
    shell编程(case)
    VMware镜像迁移至zstack
    VMware安装zstack踩坑日记
    wordpress添加https
    python下载油管视频
    pandas多班级合并提取教师个人课表,多表同位置填充数据
    博客园美化备份
    Linux 运行Python文件/命令/程序,不因终端关闭而终止运行
  • 原文地址:https://www.cnblogs.com/qixidi/p/10287653.html
Copyright © 2011-2022 走看看