|
@@ -5,18 +5,17 @@
|
|
|
var scMathUtil = {
|
|
|
innerRoundTo: function(num, digit){
|
|
|
var lFactor = Math.pow(10, digit);
|
|
|
- var fOffSet;
|
|
|
- if (num > 0){
|
|
|
- fOffSet = 0.5;
|
|
|
+ var fOffSet = 0.5;
|
|
|
+ var sign = '';
|
|
|
+ if (num < 0){
|
|
|
+ sign = '-';
|
|
|
+ num = Math.abs(num);
|
|
|
}
|
|
|
- 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);
|
|
|
+ return Number(sign + r1 + '.' + r2);
|
|
|
},
|
|
|
floatToBin: function(num) {
|
|
|
return num.toString(2);
|
|
@@ -24,6 +23,12 @@ var scMathUtil = {
|
|
|
binToFloat: function(bin) {
|
|
|
var result = 0;
|
|
|
var iLength = bin.length;
|
|
|
+ var sign = '';
|
|
|
+ if (iLength > 0 && bin[0]==='-'){
|
|
|
+ sign = '-';
|
|
|
+ bin = bin.substring(1, iLength);
|
|
|
+ }
|
|
|
+ iLength = bin.length;
|
|
|
var iDot = bin.indexOf('.');
|
|
|
if (iDot >= 0) {
|
|
|
for (var i = 0; i < iLength; i++) {
|
|
@@ -42,7 +47,7 @@ var scMathUtil = {
|
|
|
else {
|
|
|
result = parseInt(bin, 2);
|
|
|
};
|
|
|
- return result;
|
|
|
+ return sign + result;
|
|
|
},
|
|
|
incMantissa: function(bin){
|
|
|
var result = bin;
|
|
@@ -66,4 +71,4 @@ var scMathUtil = {
|
|
|
var me = this;
|
|
|
return me.innerRoundTo(me.binToFloat(me.incMantissa(me.floatToBin(num))), digit);
|
|
|
}
|
|
|
-}
|
|
|
+};
|