| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | function write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{ | 
					
						
							|  |  |  | 	var idx = fmt.length - 1; | 
					
						
							|  |  |  | 	while(fmt.charCodeAt(idx-1) === 44) --idx; | 
					
						
							|  |  |  | 	return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | function write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{ | 
					
						
							|  |  |  | 	var o/*:string*/; | 
					
						
							|  |  |  | 	var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; | 
					
						
							|  |  |  | 	if(fmt.match(/^#+0.0E\+0$/)) { | 
					
						
							| 
									
										
										
										
											2017-05-08 03:49:05 +00:00
										 |  |  | 		if(val == 0) return "0.0E+0"; | 
					
						
							|  |  |  | 		else if(val < 0) return "-" + write_num_exp(fmt, -val); | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | 		var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); | 
					
						
							| 
									
										
										
										
											2017-05-08 03:49:05 +00:00
										 |  |  | 		var ee = Math.floor(Math.log(val)*Math.LOG10E)%period; | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | 		if(ee < 0) ee += period; | 
					
						
							|  |  |  | 		o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); | 
					
						
							|  |  |  | 		if(o.indexOf("e") === -1) { | 
					
						
							| 
									
										
										
										
											2017-05-08 03:49:05 +00:00
										 |  |  | 			var fakee = Math.floor(Math.log(val)*Math.LOG10E); | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | 			if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee); | 
					
						
							|  |  |  | 			else o += "E+" + (fakee - ee); | 
					
						
							|  |  |  | 			while(o.substr(0,2) === "0.") { | 
					
						
							|  |  |  | 				o = o.charAt(0) + o.substr(2,period) + "." + o.substr(2+period); | 
					
						
							|  |  |  | 				o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0."); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			o = o.replace(/\+-/,"-"); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); | 
					
						
							|  |  |  | 	} else o = val.toExponential(idx); | 
					
						
							|  |  |  | 	if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.length-1); | 
					
						
							|  |  |  | 	if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); | 
					
						
							|  |  |  | 	return o.replace("e","E"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | var frac1 = /# (\?+)( ?)\/( ?)(\d+)/; | 
					
						
							|  |  |  | function write_num_f1(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ { | 
					
						
							|  |  |  | 	var den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den); | 
					
						
							|  |  |  | 	var myn = (rr - base*den), myd = den; | 
					
						
							|  |  |  | 	return sign + (base === 0 ? "" : ""+base) + " " + (myn === 0 ? fill(" ", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + "/" + r[3] + pad0(myd,r[4].length)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | function write_num_f2(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ { | 
					
						
							|  |  |  | 	return sign + (aval === 0 ? "" : ""+aval) + fill(" ", r[1].length + 2 + r[4].length); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-06-09 00:59:13 +00:00
										 |  |  | var dec1 = /^#*0*\.([0#]+)/; | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | var closeparen = /\).*[0#]/; | 
					
						
							|  |  |  | var phone = /\(###\) ###\\?-####/; | 
					
						
							|  |  |  | function hashq(str/*:string*/)/*:string*/ { | 
					
						
							|  |  |  | 	var o = "", cc; | 
					
						
							|  |  |  | 	for(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) { | 
					
						
							|  |  |  | 		case 35: break; | 
					
						
							|  |  |  | 		case 63: o+= " "; break; | 
					
						
							|  |  |  | 		case 48: o+= "0"; break; | 
					
						
							|  |  |  | 		default: o+= String.fromCharCode(cc); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return o; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | function rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return ""+(Math.round(val * dd)/dd); } | 
					
						
							|  |  |  | function dec(val/*:number*/, d/*:number*/)/*:number*/ { | 
					
						
							| 
									
										
										
										
											2020-06-27 22:39:56 +00:00
										 |  |  | 	var _frac = val - Math.floor(val), dd = Math.pow(10,d); | 
					
						
							|  |  |  | 	if (d < ('' + Math.round(_frac * dd)).length) return 0; | 
					
						
							|  |  |  | 	return Math.round(_frac * dd); | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-04-30 04:54:41 +00:00
										 |  |  | function carry(val/*:number*/, d/*:number*/)/*:number*/ { | 
					
						
							|  |  |  | 	if (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) { | 
					
						
							|  |  |  | 		return 1; | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-04-30 04:54:41 +00:00
										 |  |  | 	return 0; | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2020-06-17 05:13:59 +00:00
										 |  |  | function flr(val/*:number*/)/*:string*/ { | 
					
						
							|  |  |  | 	if(val < 2147483647 && val > -2147483648) return ""+(val >= 0 ? (val|0) : (val-1|0)); | 
					
						
							|  |  |  | 	return ""+Math.floor(val); | 
					
						
							|  |  |  | } |