传统的四舍五入算法,总算测试通过了。
修复浮点数误差,修复所谓的 “四舍六入五成双” 银行进位法。
static Round(value:number, decimalCount:number):number {
        if(value == null)
            return null;

        let precision0 = Math.pow(10,decimalCount);
        let value0 = Fix999(value * precision0);
        let value0x = Fix999(Math.floor(value0) / precision0);

        let precision1 = Math.pow(10,decimalCount+1);
        let value1 = Fix999(value * precision1);
        let value1x = Fix999(Math.floor(value1) / precision1);

        function Fix999(x:number) {
            let s = x.toString();
            if(s.indexOf('.') > 0) {
                if(    s.endWith('99999')
                    || s.endWith('99998')
                    || s.endWith('99997')
                    || s.endWith('99996')
                    || s.endWith('99995')
                    || s.endWith('99994')
                    || s.endWith('99993')
                    || s.endWith('99992')
                    || s.endWith('99991')
                    || s.endWith('99990')
                ) {
                    return parseFloat(x.toFixed(decimalCount+3));
                }
            }

            return x;
        }

        var s1 = value1x.toFixed(decimalCount + 1);
        return s1[s1.length - 1] >= '5' ? parseFloat(Fix999(value0x + 1/Math.pow(10,decimalCount)).toFixed(decimalCount)) : parseFloat(value0x.toFixed(decimalCount));
    }

 

posted @ 2025-03-19 13:21 heguo 阅读(1) 评论(0) 推荐(0) 编辑
摘要: AutoHotKey 虚拟桌面 一键关闭 阅读全文
posted @ 2024-03-12 11:30 heguo 阅读(150) 评论(0) 推荐(0) 编辑
摘要: pdf image 图片 转换 阅读全文
posted @ 2020-08-09 17:55 heguo 阅读(715) 评论(0) 推荐(1) 编辑
摘要: 今天刚毕业的新人问我关于多线程的问题,因为我也没有理解透彻,一时没有解释清楚,现在细想类比蕃茄炒蛋,整理了下: IIS是一个天生的多线程程序。好比,一个订单请求过来,就放出一个厨师做蕃茄炒蛋,再来一个新订单,再放一个厨师出来做蕃茄炒蛋。厨师做完菜,就回房休息。因为是多个CPU,多核,可以安排N个厨师 阅读全文
posted @ 2019-07-26 20:56 heguo 阅读(142) 评论(0) 推荐(1) 编辑
摘要: 总算有机会使用git了,ubuntu 上搭了个 gitlab 服务,为避免后人踩坑,分享下: 对于Linux小白来说,安装 ubuntu 桌面版,比命令行直观。先熟悉后,视情况再安装 ubuntu 服务版。 安装docker版的gitlab,集成了 redis,posgresql 等依赖组件。 do 阅读全文
posted @ 2017-12-01 15:08 heguo 阅读(275) 评论(0) 推荐(0) 编辑
摘要: vscode vscode 的angularjs2.0项目,编译后有警告: WARNING in (webpack)/buildin/module.js There are multiple modules with names that only differ in casing. This ca 阅读全文
posted @ 2017-03-18 14:19 heguo 阅读(5297) 评论(0) 推荐(1) 编辑
摘要: 原项目用ng1.5写的,现在改成ng2.0了,踩了不少坑,不过都忘记了。 如果你也正好要做这个工作,正好看到这个文章,不妨参考下。 AngularJs 1.x -> 2.0 ng-repeat -> *ngFor ng-show -> *ngIf [hidden] [style.display]=" 阅读全文
posted @ 2016-11-15 18:26 heguo 阅读(1014) 评论(0) 推荐(0) 编辑
摘要: angularjs2.0刚发布, typescript2.0也刚发布, 于2016.9.29记录. 参考文档:https://angular.cn/docs/ts/latest/quickstart.html win7环境 1. 下载并安装 Visual Studio Code, 以下简称 vsc 阅读全文
posted @ 2016-09-29 14:25 heguo 阅读(4915) 评论(2) 推荐(0) 编辑
摘要: 前几天网上下载了一个国外的源码示例,布署到IIS上,查看网页中文显示乱码,各种不方便,你懂的。用记事本打开文件,显示是ANSI格式,另存为UTF8格式,保存,再查看页面就正常显示中文了。文件好多,一个个转吧,转烦了,自己写了个小程序,可以批量转成UTF8文件,用着顺手,发来共享,如果你正好也有和我一... 阅读全文
posted @ 2016-01-20 20:49 heguo 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 用itextsharp输出PDF文档,支持用XML定义文档,可定义多个数据源,简单的表达式 阅读全文
posted @ 2015-02-11 12:21 heguo 阅读(2028) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示