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);
    	}
    }	
    	
    
    
  • 相关阅读:
    python中获取今天昨天和明天的日期
    Redis安装系统服务1073错误
    npm 安装删除模块
    git 远程服务器创建项目自动化部署、克隆推送免密码
    A20地址线科普【转载】
    fork 与 vfork
    /bin /usr/bin /sbin /usr/sbin 目录的作用
    Coreutils
    VMware 设置支持UEFI
    npm 发布包
  • 原文地址:https://www.cnblogs.com/qixidi/p/10287653.html
Copyright © 2011-2022 走看看