js小数加减时精度不准确

// 返回值:arg1加上arg2的精确结果
function accAdd(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
}

// 返回值:arg1减去arg2的精确结果
function accSub(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);
}

原文地址:https://www.cnblogs.com/plBlog/p/11672579.html

时间: 2024-10-11 10:26:11

js小数加减时精度不准确的相关文章

php小数加减精度问题

在php开发时,有小数加减的场景.结果发现不能够等于预想的值, 在网上也找了点资料,发现是精度的问题.最后用bccomp函数解决了. bccomp 比较二个高精确度数字. 语法: int bccomp(string left operand, string right operand, int [scale]); 返回值: 整数 函数种类: 数学运算   内容说明 此函数比较二个高精确度的数字.输入二个字符串,若二个字符串一样大则返回 0:若左边的数字字符串 (left operand) 比右边

转:JS日期加减,日期运算

原文 出处http://hi.baidu.com/tonlywang/item/685fba8933a2a756e73d1950 一.日期减去天数等于第二个日期 function cc(dd,dadd) ...{ //可以加上错误处理 var a = new Date(dd) a = a.valueOf() a = a - dadd * 24 * 60 * 60 * 1000 a = new Date(a) alert(a.getFullYear() + "年" + (a.getMon

js 时间加减

//js格式化时间 "yyyy-MM-dd hh:mm:ss" Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s

js小数计算引起的精度误差问题

我记得刚开始学js的时候学到浮点有举例0.1+0.2 它的计算结果是: 0.1+0.20.30000000000000004 很神奇的一个计算,js是弱语言,在精度上没做处理: 我就自己定义了加减乘除: 加: export const accAdd = (arg1, arg2) => { let r1, r2, m; try { r1 = arg1.toString().split('.')[1].length; } catch (e) { r1 = 0; } try { r2 = arg2.t

Js日期加减(天数),时间加减,日期运算,可直接调用

根据传入的日期做加减法计算,整数为加法,负数为减法,但是是天.  num可传入: 1,2,3,-1,-2,-3等,默认是加一天:date可传入: 2017-01-01格式的,不传的话默认是当天日期. function dateChange(num = 1,date = false) { if (!date) { date = new Date();//没有传入值时,默认是当前日期 date = date.getFullYear() + '-' + (date.getMonth() + 1) +

js 浮点数加减问题

/** ** 加法函数,用来得到精确的加法结果 ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. ** 调用:accAdd(arg1,arg2) ** 返回值:arg1加上arg2的精确结果 **/ function accAdd(arg1, arg2) { var r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length; } catch (e) {

js页面加载时调用函数方法

方法一:在html的body中加入onload=""事件 <body onload='queryServer()'> </body> 方法二:jquery 中:$(function(){}) //方法体里面写调用方法 <!-- 全局js --><script src="../js/jquery.min.js?v=2.1.4"></script> <script type="text/java

JS日期加减

JS日期加减,日期运算

一.日期减去天数等于第二个日期 function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")}cc("12/23/200