⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 number.js

📁 这是一个ajax的例子大家好好的看看就是一个鱼眼的效果
💻 JS
📖 第 1 页 / 共 3 页
字号:
if(!dojo._hasResource["tests.number"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["tests.number"] = true;dojo.provide("tests.number");dojo.require("dojo.number");/** * Refer to ICU4J's NumberFormatTest.expect(...)  */tests.number.check=function(t,options,sourceInput,expectResult){	tests.number.checkFormatParseCycle(t, t,options,sourceInput,expectResult,false);	tests.number.checkParse(t, t,options,expectResult,sourceInput);	}/** * Perform a single formatting check or a backward check * backward check:number1 -(formatted)-> string1 -(parsed)-> number2 -(formated)-> string2 * then number should == number2; string1 should == string2 */tests.number.checkFormatParseCycle=function(t,options,sourceInput,expectResult,		 backwardCheck/*boolean,indicates whether need a backward chain check,like formate->parse->format*/){		if(null != options){		var pattern = options.pattern;		var locale = options.locale;		//TODO: add more fields	}		//print("\n");	var str = null==pattern?"default":pattern;	//print("pattern:" + str + "| locale:" + locale);	//print("input:" + sourceInput);	var result = dojo.number.format(sourceInput,options);	//print("result:" + result);	if(null != expectResult){	    t.is(expectResult,result);	}	if(backwardCheck){		var resultParsed = dojo.number.parse(result,options);		//print("resultParsed:" + resultParsed);				if(!tests.number._decimalNumberDiff(sourceInput,resultParsed)){			    t.is(sourceInput,resultParsed);		}				var resultParsedReformatted = dojo.number.format(resultParsed,options);		//print("resultParsedReformatted:" + resultParsedReformatted);	    if(!tests.number._decimalNumberDiff(result,resultParsedReformatted)){			t.is(result,resultParsedReformatted);		}	}	}/** * Perform a single parsing check */tests.number.checkParse=function(t,options,sourceInput,expectResult){	var str = "default";	if(null != options && null != options.pattern){			str = options.pattern;	}	//print("input:" + sourceInput);	var result = dojo.number.parse(sourceInput,options);	//print("result :" + result);	if(null != expectResult){	    t.is(expectResult,result);	}}/** * //TODO:Round a given number */tests.number.rounding = function(t,number,maxFractionDigits,expected){	var pattern="#0.";	for(var i=0; i<maxFractionDigits; i++){pattern += "#";}	var result = dojo.number.format(number,{pattern:pattern});	t.is(expected,result);	}/** * Run a batch parsing */function runBatchParse(options,dataArray/*array*/,pass/*boolean*/){	var exception = null;	var result;	var i=0;	var str = (null==options.pattern)?"default":options.pattern;		//print("\n");	for(; i<dataArray.length; i++){		try{			//print("["+i+"]"+"input:"+dataArray[i]);			result = dojo.number.parse(dataArray[i],options);						if(isNaN(result)){				throw "\"" + dataArray[i] + "\" is parsed to NaN with pattern " + str;			}			//print("["+i+"]"+"output:"+result);			}catch(e){			exception = e;			break;		}	}			if(!pass && (exception == null)) {		throw "runBatchParse() - stric parse failed, no exception when parsing illegal data"; 	}else if(exception != null){		if(!pass && i == 0){			//strict parsing should fail for all the dataArray elements as expected			//pass condition for strict parsing			return;		}		throw "runBatchParse() failed: " + exception;			}}/** * Check whether the given two numbers differ under the decimal bound *  */tests.number._decimalNumberDiff = function(num1,num2){	//TODO: should be more accurate when dojo.number finish rounding in the future	var diffBound = 1e-3;	var diff = num1 - num2;	//print("Math.abs(diff) " + Math.abs(diff));	if(Math.abs(diff) < diffBound ){		return true;	}else if(isNaN(Math.abs(diff))){			var s = num1.toString().split(num2);		s[1] = s[1].replace(",","0");		s[1] = s[1].replace('\u066b','0');		return (new Number(s[1])< diffBound);	}	return false;	}tests.register("tests.number", 	[		{			// Test formatting and parsing of currencies in various locales pre-built in dojo.cldr			// NOTE: we can't set djConfig.extraLocale before bootstrapping unit tests, so directly			// load resources here for specific locales:			name: "number",			setUp: function(){				var partLocaleList = ["en-us", "fr-fr", "de-de"];				for(var i = 0 ; i < partLocaleList.length; i ++){					dojo.requireLocalization("dojo.cldr","number",partLocaleList[i], "zh-cn,zh,ko-kr,pt,en-us,en-gb,de,ja,ja-jp,en,ROOT,en-au,fr,es,ko,zh-tw,it,es-es,de-de");				}			},			runTest: function(t){			}		},		{			name: "format", // old tests			runTest: function(t){	t.is("0123", dojo.number.format(123, {pattern: "0000"}));	t.is("-12,34,567.890", dojo.number.format(-1234567.89, {pattern: "#,##,##0.000##"}));	t.is("-12,34,567.89012", dojo.number.format(-1234567.890123, {pattern: "#,##,##0.000##"}));	t.is("(1,234,567.89012)", dojo.number.format(-1234567.890123, {pattern: "#,##0.000##;(#,##0.000##)"}));	t.is("(1,234,567.89012)", dojo.number.format(-1234567.890123, {pattern: "#,##0.000##;(#)"}));	t.is("50.1%", dojo.number.format(0.501, {pattern: "#0.#%"}));	t.is("98", dojo.number.format(1998, {pattern: "00"}));	t.is("01998", dojo.number.format(1998, {pattern: "00000"}));	t.is("0.13", dojo.number.format(0.125, {pattern: "0.##"})); //NOTE: expects round_half_up, not round_half_even	t.is("0.1250", dojo.number.format(0.125, {pattern: "0.0000"}));	t.is("0.1", dojo.number.format(0.100004, {pattern: "0.####"}));	t.is("-12", dojo.number.format(-12.3, {places:0, locale: "en-us"}));	t.is("-1,234,567.89", dojo.number.format(-1234567.89, {locale: "en-us"}));//	t.is("-12,34,567.89", dojo.number.format(-1234567.89, {locale: "en-in"}));	t.is("-1,234,568", dojo.number.format(-1234567.89, {places:0, locale: "en-us"}));//	t.is("-12,34,568", dojo.number.format(-1234567.89, {places:0, locale: "en-in"}));	t.is("-1\xa0000,10", dojo.number.format(-1000.1, {places:2, locale: "fr-fr"}));	t.is("-1,000.10", dojo.number.format(-1000.1, {places:2, locale: "en-us"}));	t.is("-1\xa0000,10", dojo.number.format(-1000.1, {places:2, locale: "fr-fr"}));	t.is("-1.234,56", dojo.number.format(-1234.56, {places:2, locale: "de-de"}));	t.is("-1,000.10", dojo.number.format(-1000.1, {places:2, locale: "en-us"}));	t.is("123.46%", dojo.number.format(1.23456, {places:2, locale: "en-us", type: "percent"}));	//rounding	t.is("-1,234,568", dojo.number.format(-1234567.89, {places:0, locale: "en-us"}));//	t.is("-12,34,568", dojo.number.format(-1234567.89, {places:0, locale: "en-in"}));	t.is("-1,000.11", dojo.number.format(-1000.114, {places:2, locale: "en-us"}));	t.is("-1,000.11", dojo.number.format(-1000.115, {places:2, locale: "en-us"}));	t.is("-1,000.12", dojo.number.format(-1000.116, {places:2, locale: "en-us"}));	t.is("-0.00", dojo.number.format(-0.0001, {places:2, locale: "en-us"}));	t.is("0.00", dojo.number.format(0, {places:2, locale: "en-us"}));	//change decimal places	t.is("-1\xa0000,100", dojo.number.format(-1000.1, {places:3, locale: "fr-fr"}));	t.is("-1,000.100", dojo.number.format(-1000.1, {places:3, locale: "en-us"}));			}		},		{			name: "parse", // old tests			runTest: function(t){	t.is(1000, dojo.number.parse("1000", {locale: "en-us"}));	t.is(1000.123, dojo.number.parse("1000.123", {locale: "en-us"}));	t.is(1000, dojo.number.parse("1,000", {locale: "en-us"}));	t.is(-1000, dojo.number.parse("-1000", {locale: "en-us"}));	t.is(-1000.123, dojo.number.parse("-1000.123", {locale: "en-us"}));	t.is(-1234567.89, dojo.number.parse("-1,234,567.89", {locale: "en-us"}));	t.is(-1234567.89, dojo.number.parse("-1 234 567,89", {locale: "fr-fr"}));	t.t(isNaN(dojo.number.parse("-1 234 567,89", {locale: "en-us"})));	t.t(isNaN(dojo.number.parse("10,00", {locale: "en-us"})));	t.t(isNaN(dojo.number.parse("1000.1", {locale: "fr-fr"})));	t.t(isNaN(dojo.number.parse("")));	t.t(isNaN(dojo.number.parse("abcd")));	//test whitespace//	t.is(-1234567, dojo.number.parse("  -1,234,567  ", {locale: "en-us"}));//	t.t(dojo.number.parse("9.1093826E-31"));	t.is(0.501, dojo.number.parse("50.1%", {pattern: "#0.#%"}));	t.is(123.4, dojo.number.parse("123.4", {pattern: "#0.#"}));	t.is(-123.4, dojo.number.parse("-123.4", {pattern: "#0.#"}));	t.is(123.4, dojo.number.parse("123.4", {pattern: "#0.#;(#0.#)"}));	t.is(-123.4, dojo.number.parse("(123.4)", {pattern: "#0.#;(#0.#)"}));	t.is(null, dojo.number.format("abcd", {pattern: "0000"}));		t.is(123, dojo.number.parse("123", {places:0}));	t.is(123, dojo.number.parse("123", {places:'0'}));	t.is(123.4, dojo.number.parse("123.4", {places:1}));	t.is(123.45, dojo.number.parse("123.45", {places:'1,3'}));	t.is(123.45, dojo.number.parse("123.45", {places:'0,2'}));			}		},		{			name: "format_icu4j3_6",			runTest: function(t){/************************************************************************************************* * Evan:The following test cases are referred from ICU4J 3.6 (NumberFormatTest etc.)  * see http://icu.sourceforge.net/download/3.6.html#ICU4J *************************************************************************************************//** * In ICU4J, testing logic for NumberFormat.format() is seperated into  * differernt single tese cases. So part of these logic are  * collected together in this single method. *  * !!Failed cases are as follows: * 1.1234567890987654321234567890987654321 should be formatted as  *   1,234,567,890,987,654,321,234,567,890,987,654,321 with all the default parameters, *   but got 1.234 instead, may due to the unimplemeted exponent. * 2.\u00a4 and ' are not replaced * 	 with pattern "'*&'' '\u00a4' ''&*' #,##0.00" *   1.0 should be formatted to "*&' Re. '&* 1.00",but got "'*&'' '\u00a4' ''&*' 1.00" instead *   etc.    * 		 */	//print("test_number_format_icu4j3_6() start..............");	/* !!Failed case, 1.234 returned instead	//refer to ICU4J's NumberFormatTest.TestCoverage() 	var bigNum = 1234567890987654321234567890987654321;	var expectResult = "1,234,567,890,987,654,321,234,567,890,987,654,321";	tests.number.checkFormatParseCycle(t, null,bigNum,expectResult,false);	*/			//in icu4j should throw out an exception when formatting a string,	//but it seems dojo.number.format can deal with strings	//return 123,456,789	dojo.number.format("123456789");		//!!Failed case, \u00a4 and ' are not replaced	/*	var options = {pattern:"'*&'' '\u00a4' ''&*' #,##0.00",locale:"en-us"};	tests.number.check(t, options,1.0, "*&' Re. '&* 1.00");	tests.number.check(t, options,-2.0, "-*&' Rs. '&* 2.00");		options = {pattern:"#,##0.00 '*&'' '\u00a4' ''&*'",locale:"en-us"};	tests.number.check(t, options,1.0,"1.00 *&' Re. '&*");	tests.number.check(t, options,-2.0,"-2.00 *&' Rs. '&*");	*/	//print("test_number_format_icu4j3_6() end..............\n");			}		},		{			name: "format_patterns",			runTest: function(t){/** * Refer to ICU4J's NumberFormatTest.TestPatterns() which now only coveres us locale	 */	//print("test_number_format_Patterns() start..............");	var patterns = (["#0.#", "#0.", "#.0", "#"]);	var patternsLength = patterns.length;    	var num = (["0","0", "0.0", "0"]);	var options;	//icu4j result seems doesn't work as:	//var num = (["0","0.", ".0", "0"]);      	for (var i=0; i<patternsLength; ++i)	{			options = {pattern:patterns[i]};		tests.number.checkFormatParseCycle(t, options,0,num[i],false);       	}		//!!Failed case	//In ICU4J:	//        unquoted special characters in the suffix are illegal	//        so "000.000|###" is illegal; "000.000'|###'" is legal	//dojo.number.format:	//        when formatting 1.2 with illegal pattern "000.000|###"	//		  no exception was thrown but got "001.200|###" instead.		/*	patterns = (["000.000|###","000.000'|###'"]);	var exception = false;	var result;	for(var i = 0; i < patterns.length; i ++){		try{			//"001.200'|###'" is return for "000.000'|###'"			//"001.200|###" is return for "000.000|###"			result = dojo.number.format(1.2,{pattern:patterns[i]});			print("["+i+"] 1.2 is formatted to " + result + " with pattern " + patterns[i]);		}catch(e){			exception = true;		}		if(exception && i==1){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -