123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /**
- * Created by jimiz on 2017/3/28.
- */
- var scMathUtil = {
- innerRoundTo: function(num, digit){
- var lFactor = Math.pow(10, digit);
- var fOffSet;
- if (num > 0){
- fOffSet = 0.5;
- }
- else{
- fOffSet = -0.5;
- };
- var result = Math.floor((num / lFactor) + fOffSet).toString();
- var iLength = result.length;
- var r1 = result.substring(0, iLength + digit);
- var r2 = result.substring(iLength + digit, iLength);
- return Number(r1 + '.' + r2);
- },
- floatToBin: function(num) {
- return num.toString(2);
- },
- binToFloat: function(bin) {
- var result = 0;
- var iLength = bin.length;
- var iDot = bin.indexOf('.');
- if (iDot >= 0) {
- for (var i = 0; i < iLength; i++) {
- var num = Number(bin[i]);
- var idx = iDot - i;
- if (idx === 0) {
- continue
- };
- if (idx > 0) {
- idx -= 1
- };
- var r = Math.pow(2, idx);
- result += num * r;
- }
- }
- else {
- result = parseInt(bin, 2);
- };
- return result;
- },
- incMantissa: function(bin){
- var result = bin;
- var iDot = bin.indexOf('.');
- if (iDot < 0){return result};
- var iLength = bin.length;
- for (var i = iLength - 1; i > iDot; i--){
- var num = Number(bin[i]);
- if (num === 0){
- num = 1;
- var bin1 = bin.substring(0, i);
- var bin2 = bin.substring(i + 1, iLength);
- result = bin1 + num.toString() + bin2;
- break;
- }
- };
- return result;
- },
- roundTo: function(num, digit){
- var me = this;
- return me.innerRoundTo(me.binToFloat(me.incMantissa(me.floatToBin(num))), digit);
- }
- }
|