//冒泡排序
function sortarr(arr) {
for (i = 0; i < arr.length - 1; i++) {
for (j = 0; j < arr.length - 1 - i; j++) {
if (arr[j].length > arr[j + 1].length) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
//截取 做低位整数乘法
function twoNum(_R, _R2) {
var arr = [];
for (var i = 0; i < _R.length; i++) {
var numR = parseInt(_R.substr(_R.length - i - 1, 1))
for (var j = 0; j < _R2.length; j++) {
// console.log('numR:' + numR);
// console.log('numR2:' + _R2[j]);
var numR2 = _R2.substr(_R2.length - j - 1, 1);
var val = numR * numR2;
var val0 = val + ''
for (var ij = 0; ij < i + j; ij++) {
val0 = val0 + '0';
}
arr.push(val0);
// console.log(val0);
}
}
return sortarr(arr);
}
//乘法结果累加
function add(a, b) {
var result = [];
var addMore = 0;
var h, r;
a = a + '';
b = b + '';
var aLenth = a.length;
var bLenth = b.length;
for (var i = 0; i < aLenth; i++) {
if ((bLenth - i - 1) >= 0) {
h = parseInt(a.charAt(aLenth - i - 1)) + parseInt(b.charAt(bLenth - i - 1)) + addMore;
r = parseInt(h % 10);
result[aLenth - i - 1] = r;
addMore = parseInt(h / 10);
} else {
h = parseInt(a.charAt(aLenth - i - 1)) + addMore;
r = h % 10;
result[aLenth - i - 1] = r;
addMore = parseInt(h / 10);
}
}
if (addMore > 0) result.unshift(addMore);
return result.join('');
}
//累加完成输出两个大数相乘的结果
function arrAdd(R, R2) {
var _arr = twoNum(R.toString(), R2.toString());
var tempAddVal = _arr[_arr.length - 1];
for (var i = 0; i < _arr.length; i++) {
if (_arr.length - i >= 2) {
tempAddVal = add(tempAddVal, _arr[_arr.length - 2 - i]);
var nextVal = _arr[_arr.length - 3 - i];
if (!nextVal) {
// console.log('最后两数相乘结果为:', tempAddVal);
return tempAddVal;
}
}
}
}
function result(num, count) {
var position = num.toString();
position = position.indexOf('.');
if (position == -1) {
var tempVal = num;
for (var i = 0; i < count; i++) {
tempVal = arrAdd(tempVal, num)
}
return tempVal;
} else {
var val = num;
for (var i = 0; i < num.toString().length - position - 1; i++) {
val = val * 10;
}
var tempVal = val
for (var i = 0; i < count; i++) {
tempVal = arrAdd(tempVal, val)
}
return tempVal;
}
}
console.log(result(95.123, 11));