tkturbo #9006(2009/05/25 16:22 GMT) [ JavaScript ] Rating2/2=1.00
see:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
/* --------------------------------------------------------------------------- */ String.prototype.toCharArray=function(){ var arr = new Array(this.length); for(var i = 0; i < this.length; i++){ arr[i] = this.charAt(i); }; return arr; }; /* --------------------------------------------------------------------------- */ function add(strnum1, strnum2){ var arr1 = strnum1.toCharArray().reverse(); var arr2 = strnum2.toCharArray().reverse(); var max = (arr1.length > arr2.length ? arr1.length : arr2.length) - 1; var strsum = ""; for(var i = 0, up = 0; i <= max; i++){ var c1 = i < arr1.length ? parseInt(arr1[i],10) : 0; var c2 = i < arr2.length ? parseInt(arr2[i],10) : 0; c1 += up; c1 += c2; up = Math.floor(c1/10); c1 %= 10; strsum = c1 + strsum; if(i == max) strsum = up+strsum; } return strsum; }; /* --------------------------------------------------------------------------- */ function sum(arr){ var strsum = ""; for(var i = 0; i < arr.length; i++){ strsum = add(strsum, arr[i]); } return strsum.replace(/^0*/,""); }; /* --------------------------------------------------------------------------- */ function multiple(a, b){ var arr_a = a.toCharArray().reverse(); var arr_b = b.toCharArray().reverse(); var arr_c = new Array(arr_b.length); var max = arr_a.length-1; for(var i = 0, zeropad=""; i < arr_b.length; i++,zeropad+="0"){ var str_c = ""; for(var j = 0, up=0; j<arr_a.length; j++){ var c = (parseInt(arr_a[j], 10) * parseInt(arr_b[i],10)); c+=up; up = Math.floor(c/10); c %= 10; str_c = c+str_c; if(j==max && up>0) str_c=up+str_c; } str_c+=zeropad; arr_c[i] = str_c; } return sum(arr_c); }; /* --------------------------------------------------------------------------- */ function hex2decimal(hexstr){ var template = "0123456789ABCDEF"; var arr = hexstr.toUpperCase().substring(2).toCharArray().reverse(); for(var i = 0, hex="1"; i < arr.length; i++, hex=multiple(hex,"16")){ var numc = "" + template.indexOf(arr[i]); var mult = multiple(numc, hex); arr[i] = mult; } var decstr=sum(arr); if(decstr.length==0) desctr="0"; return decstr; };
Rating2/2=1.00-0+
1 reply [ reply ]
tkturbo #9008(2009/05/25 19:36 GMT) Rating0/0=0.00
リンク貼るの失敗してますたorz
また、最大値について、「変換後の値がNumber.MAX_VALUE桁となる値」と修正します。
see: 検証用ページ
[ reply ]
tkturbo #9006() [ JavaScript ] Rating2/2=1.00
see:
Rating2/2=1.00-0+
1 reply [ reply ]