例如一个金额字段,数据表里保存的是:123456.002233,前台列表里显示123,456.00,编辑窗口里显示123456.00。

解决方案 »

  1.   

    Cstr(rs("数据")*1000000000/1000000000)试试看~~~~
      

  2.   

    不行的,要写一个javascript函数,来处理:
    输入:123456.002233
    输出:123,456.00(保留两位小数;整数部分,每三段加一个逗号)
      

  3.   

    我这里有一些金额处理的js,希望对你有用var Nums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); 
    var Digits = new Array("", "拾", "佰", "仟"); 
    var Units = new Array("", "万", "亿", "万亿","仟兆"); /**
    * 检查字符串是否为合法的金额
    * @param {String} 字符串
    * @return {bool} 是否为合法金额
    */
    function isMoney(s) 
    {
    var isMoney = RegExp(/^[0-9]*\.?[0-9]{0,2}$/);
    return ( isMoney.test(s) );
    }/**
    * 判断输入变量是否是浮点数
    * @param {String} 要检查的变量值
    * @return {bool} 是否为浮点数
    */
    function isFloat( s )
    {
    var isFloat = RegExp(/^([0-9]+(\.+))[0-9]+$/);
    return ( isFloat.test(s) );
    }/**
    * 检查指定的input中输入的金额是否合法,如果合法返回金额,否则返回null
    * @param {String} 要检查的input的id
    */
    function getMoney(inputName)
    {
    var money = document.getElementById(inputName).value;
    if ( money !=null && money.length>0 )
    {
    return removeComma( money );
    }else{
    return null;
    }
    }/**
    * 检查指定的input中输入的金额是否合法,并进行显示转换
    * @param {String} 要检查的input的id
    */
    function checkMoney(inputName)
    {
    var input = document.getElementById(inputName);
    if ( isEmpty( input.value ) )
    {
    return false;
    }
    var testMoney = removeComma( input.value );
    if ( isMoney( testMoney ) )
    {
    if(testMoney.length>1){
    while(testMoney.charAt(0)=='0'&&testMoney.charAt(1)!='.'){
    testMoney = testMoney.substring(1,testMoney.length);
    }
    }
    input.value = toCashWithCommaAndDot( testMoney );
    return true;
    }else{
    input.value = "";
    input.focus();
    return false;
    }
    } /**
    * 转换为中文金额表示
    * @param {String} 要转换的金额字符串
    * @return {String} 转换后的金额字符串
    */
    function toChineseCash( cash )
    {
    if ( cash == null || cash.length == 0 )
    {
    return '';
    }
    var noCommaCash = removeComma(cash);
    if ( parseFloat(cash) == 0 )
    {
    return '';
    }
    if( !isFloat( noCommaCash ) )
    {
    return convertIntegerToChineseCash(noCommaCash);
    }
    var dotIndex = noCommaCash.indexOf('.');
    var integerCash = noCommaCash.substring( 0, dotIndex );
    var decimalCash = noCommaCash.substring( dotIndex + 1 );
    var str = convertIntegerToChineseCash(integerCash);
    var str1 = convertDecimalToChineseCash(decimalCash);
    if(str!=""){
    if(str1.length == 2){
    if(str1.substring(1,2) == '分'){
    str1 = '零'+str1;
    }
    }

    }
    if(str1.length == 2){
    if(str1.substring(1,2) == '角'){
    str1 = str1+'整';
    }
    }
    return str+str1;
    }/**
    * 为金额添加,分割符
    * @param {String} 要转换的金额字符串
    * @return {String} 转换后的金额字符串
    */
    function toCashWithComma( cash )
    {
    while( cash.charAt(0) == '0' )
    {
    cash = cash.substr(1);
    }
    if( !isFloat( cash ) )
    return addComma(cash);

    var dotIndex = cash.indexOf('.');
    var integerCash = cash.substring( 0, dotIndex );
    var decimalCash = cash.substring( dotIndex );

    return addComma(integerCash)+decimalCash;
    }/**
    * 为金额添加,分割符和.分割符
    * @param {String} 要转换的金额字符串
    * @return {String} 转换后的金额字符串
    */
    function toCashWithCommaAndDot( cash )
    {
    var temp = toCashWithComma( cash );
    if ( temp.length == 0 )
    {
    return "0.00";
    }
    var dotPos = temp.indexOf(".");
    if ( dotPos < 0 )
    {
    return temp+'.00';
    }
    if ( dotPos == 0 )
    {
    temp = '0' + temp;
    dotPos = temp.indexOf(".");
    }
    if ( dotPos == temp.length-2)
    {
    return temp + '0';
    }
    if ( dotPos == temp.length-1)
    {
    return temp + '00';
    }
    return temp;
    }function convertIntegerToChineseCash(cash)
    {
    if ( cash == "0" )
    return "";
        var S = ""; //返回值 
        var p = 0; //字符位置指针 
        var m = cash.length % 4; //取模     // 四位一组得到组数 
        var k = (m > 0 ? Math.floor(cash.length / 4) + 1 : Math.floor(cash.length / 4)); 
        // 外层循环在所有组中循环 
        // 从左到右 高位到低位 四位一组 逐组处理 
        // 每组最后加上一个单位: "[万亿]","[亿]","[万]" 
        for (var i = k; i > 0; i--) 
        {
            var L = 4; 
            if (i == k && m != 0)
            {
                L = m;
            }
            // 得到一组四位数 最高位组有可能不足四位 
            var s = cash.substring(p, p + L);
            var l = s.length;        // 内层循环在该组中的每一位数上循环 从左到右 高位到低位 
            for (var j = 0;j < l;j++)
            {
                var n = parseInt(s.substring(j, j+1));
                if (n == 0)
                {
                    if ((j < l - 1) && (parseInt(s.substring(j + 1, j + 1+ 1)) > 0) //后一位(右低) 
                        && S.substring(S.length-1,S.length) != Nums[n])
                    {
                        S += Nums[n];
                    }
                }
                else 
                {
                    //处理 1013 一千零"十三", 1113 一千一百"一十三" 
                    if (!(n == 1 && (S.substring(S.length-1,S.length) == Nums[0] | S.length == 0) && j == l - 2)) 
                    {
                        S += Nums[n];
                    }
                    S +=  Digits[l - j - 1];
                }
            }
            p += L;
            // 每组最后加上一个单位: [万],[亿] 等 
            if (i < k)//不是最高位的一组 
            {
                if (parseInt(s)!= 0)
                {
                    //如果所有 4 位不全是 0 则加上单位 [万],[亿] 等 
                    S += Units[i - 1];
                }
            }
            else
            {
                //处理最高位的一组,最后必须加上单位 
                S += Units[i - 1];
            }
        }
        var han='';
        for(var i=0;i<S.length;i++){
         var j = S.substring(i,i+1);
         if(j == '拾'){
         if(i!=0){
         var x = S.substring(i-1,i);
         if(x=='零'){
         j = '壹拾';
         }
         }else{
         j = '壹拾';
         }
         }
          han = han + j;
        }
    return han+"元";
    }function convertDecimalToChineseCash( cash )
    {
    var returnCash = "";

    if ( cash == "00" )
    returnCash = "整";
    else
    {
    for( var i = 0;i < cash.length; i++ )
    {
    if( i >= 2 )
    break;
    var intValue = parseInt(cash.charAt(i));

    switch( i )
    {
    case 0:
    if ( intValue != 0 )
    returnCash += Nums[intValue]+"角";
    break;
    case 1:
    if(intValue == 0){
    break;
    }
    returnCash += Nums[intValue]+"分";
    break;
    default:
    break;
    }
    }

    }
    return returnCash;
    }function addComma(str) {
    if (str.length > 3) 
    {
    var mod = str.length % 3;
    var output = (mod > 0 ? (str.substring(0,mod)) : '');
    for (i=0 ; i < Math.floor(str.length / 3); i++) {
    if ((mod == 0) && (i == 0))
    output += str.substring(mod+ 3 * i, mod + 3 * i + 3);
    else
    output += ',' + str.substring(mod + 3 * i, mod + 3 * i + 3);
    }
    return (output);
    }
    else return str;
    }function removeComma(str)
    {
    return str.replace(new RegExp('\,',["g"]),'');
    }/**
    * 为金额指定格式
    * @param {num} 要转换的金额字符串
    * @param {pattern} 指定格式 '#,##0.00'
    * @return {String} 转换后的金额字符串
    */
    function formatNumber(num,pattern){   
      var strarr = num?num.toString().split('.'):['0'];   
      var fmtarr = pattern?pattern.split('.'):[''];   
      var retstr='';   
       
      // 整数部分   
      var str = strarr[0];   
      var fmt = fmtarr[0];   
      var i = str.length-1;     
      var comma = false;   
      for(var f=fmt.length-1;f>=0;f--){   
        switch(fmt.substr(f,1)){   
          case '#':   
            if(i>=0 ) retstr = str.substr(i--,1) + retstr;   
            break;   
          case '0':   
            if(i>=0) retstr = str.substr(i--,1) + retstr;   
            else retstr = '0' + retstr;   
            break;   
          case ',':   
            comma = true;   
            retstr=','+retstr;   
            break;   
        }   
      }   
      if(i>=0){   
        if(comma){   
          var l = str.length;   
          for(;i>=0;i--){   
            retstr = str.substr(i,1) + retstr;   
            if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr;    
          }   
        }   
        else retstr = str.substr(0,i+1) + retstr;   
      }   
       
      retstr = retstr+'.';   
      // 处理小数部分   
      str=strarr.length>1?strarr[1]:'';   
      fmt=fmtarr.length>1?fmtarr[1]:'';   
      i=0;   
      for(var f=0;f<fmt.length;f++){   
        switch(fmt.substr(f,1)){   
          case '#':   
            if(i<str.length) retstr+=str.substr(i++,1);   
            break;   
          case '0':   
            if(i<str.length) retstr+= str.substr(i++,1);   
            else retstr+='0';   
            break;   
        }   
      }   
      return retstr.replace(/^,+/,'').replace(/\.$/,'');   
    }
      

  4.   

    你可以写一个方法,用String.spilt(“.”)取到小数点后两位,在加上.前面的字符串-->123456.00
    .前面的字符串123456/1000=123  123+“,”,123456%1000=456  123,+456-->123,456
      

  5.   

    谢了,我先保存这些js函数。to:xiaozhuangfeng,能否有一个比较全面的函数来处理。
    用java或js都可。
      

  6.   

    写了个函数,lz看下能不能用。。function addComma(num) {
    var inter = Math.round(parseFloat(num) * 100); var temp = ((inter / 100) + '').split('.'); if (temp.length == 1) {
    temp[1] = '00';
    } var value = temp[0].slice(-3), count = 0; if (temp[0].length > 3) {
    for (var i = temp[0].length - 3, count = i; i - 2 > 0; i = i - 2){
    value = temp[0].substr(i - 2, 3) + ',' + value;
    count = i;
    }
    } if (count > 0) {
    value = temp[0].slice(0, count) + ',' + value;
    }
    return value + '.' + temp[1];

      

  7.   

    ex:
    var str = '123123123456.002233';
    str = str.replace(/(\d)(?=(?:\d{3})+\.)/g,'$1,');
    alert(str);