日期:2014-05-17  浏览次数:20811 次

asp中如何实现java中类似 0.####的格式
在java中可以通过设置数据格式为0.####,这样如果小数点后就最多保留4位,
没有小数则不显示并且整数部分为0时显示0.

可是asp中似乎没有类似的方法
只有   FormatNumber,可是指定一个参数后小数的位数就固定了,例如保留2位,
则会出现12.00的情况,可是实际中并不需要后面的两个0,

asp中如何实现0.####格式的数据呢

------解决方案--------------------
如果服务器上有JRE的话可以直接利用java的类写一个class, 放到windows/java/trustlib下
asp中
<%
Dim obj
set obj= GetObject( "java:ClassName ")
response.write obj.xxx()
set obj= Nothing
%>


用js写asp的话,简化功能的函数:

formatNumber(12.3456, "0.## ");

function formatNumber(number,pattern){
var str = number.toString();
var strInt;
var strFloat;
var formatInt;
var formatFloat;
if(/\./g.test(pattern)){
formatInt = pattern.split( '. ')[0];
formatFloat = pattern.split( '. ')[1];
}else{
formatInt = pattern;
formatFloat = null;
}
if(/\./g.test(str)){
if(formatFloat!=null){
var tempFloat = Math.round(parseFloat( '0. '+str.split( '. ')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);
strInt = (Math.floor(number)+Math.floor(tempFloat)).toString();
strFloat = /\./g.test(tempFloat.toString())?tempFloat.toString().split( '. ')[1]: '0 ';
}else{
strInt = Math.round(number).toString();
strFloat = '0 ';
}
}else{
strInt = str;
strFloat = '0 ';
}
if(formatInt!=null){
var outputInt = ' ';
var zero = formatInt.match(/0*$/)[0].length;
var comma = null;
if(/,/g.test(formatInt)){
comma = formatInt.match(/,[^,]*/)[0].length-1;
}
var newReg = new RegExp( '(\\d{ '+comma+ '}) ', 'g ');

if(strInt.length <zero){
outputInt = new Array(zero+1).join( '0 ')+strInt;
outputInt = outputInt.substr(outputInt.length-zero,zero)
}else{
outputInt = strInt;
}

var
outputInt = outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null? ', ': ' ')+ '$1 ')
outputInt = outputInt.replace(/^,/, ' ');

strInt = outputInt;
}

if(formatFloat!=null){
var outputFloat = ' ';
var zero = formatFloat.match(/^0*/)[0].length;

if(strFloat.length <zero){
outputFloat = strFloat+new Array(zero+1).join( '0 ');
//outputFloat = outputFloat.substring(0,formatFloat.length);
var outputFloat1 = outputFloat.substring(0,zero);
var outputFloat2 = outputFloat.substring(zero,formatFloat.length);
outputFloat = outputFloat1+outputFloat2.replace(/0*$/, ' ');
}else{
outputFloat = strFloat.substring(0,formatFloat.length);
}

strFloat = outputFloat;
}else{
if(pattern!= ' ' || (pattern== ' ' && strFloat== '0 ')){
strFloat = ' ';
}
}