0

私の質問は、jquery で数値を浮動させようとしています。このサイトでそれに関する他の質問を見ましたが、どれを見ても見つかりませんでした。

コードの一部で、$.postjquery を使用しました。データベースにリクエストを送信し、データをjsonフォーマットとしてフェッチします。私のデータベースでは、一部の数字の形式は 345,54565000000 のようです。だから、カンマの後に5桁の数字を浮動させたい。

私のコードの一部は次のとおりです。

$.post("http://localhost/ajax.php",
      function(data) {
          var listdata;
          $.each(data, function(i,item){

              listdata += "<td>"+item.number+"</td>";

          });

            $(".result).empty().html(listdata);

    },"json"
);

私の試験のいくつかは次のようなものです:(これは機能していません)

1.)

var number = (item.number).toFixed(5);
listdata += "<td>"+number+"</td>"; 

2.)

var number=item.number;
var new_number = number.toFixed(5);
listdata += "<td>"+new_number+"</td>"; 

返信ありがとうございます。

4

4 に答える 4

2
var number = 345.54565000000​;

var parsedNumber = parseFloat(parseInt(number*100000,10)/100000);

フィドル;

その区切り文字が実際にコンマである場合は、それを次のように置き換える必要があります.replace(',', '.')

于 2012-12-08T23:56:05.290 に答える
1

私が見つけた断食方法は

((number * Math.pow(10, numberOfDigits)) | 0) / Math.pow(10, numberOfDigits)

編集: Math.pow を忘れました。これは重要です。

于 2012-12-09T00:05:37.607 に答える
1

私はあなたがコンマを持っていると仮定し、コンマを使い続けたいと思っているので、Float関連の関数を壊してしまうので...素早く汚​​いですが、仕事をします:

交換

listdata += "<td>"+item.number+"</td>";

listdata += "<td>"+parseFloat(item.number.replace(',', '.')).toFixed(5).replace('.', ',')+"</td>";
于 2012-12-08T23:56:52.777 に答える
1

私はこの機能を使用します:

function roundNumber(number,decimals) {
    var newString;// The new rounded number
    decimals = Number(decimals);
    if (decimals < 1) {
        newString = (Math.round(number)).toString();
    } else {
        var numString = number.toString();
        if (numString.lastIndexOf(".") == -1) {// If there is no decimal point
            numString += ".";// give it one at the end
        }
        var cutoff = numString.lastIndexOf(".") + decimals;// The point at which to truncate the number
        var d1 = Number(numString.substring(cutoff,cutoff+1));// The value of the last decimal place that we'll end up with
        var d2 = Number(numString.substring(cutoff+1,cutoff+2));// The next decimal, after the last one we want
        if (d2 >= 5) {// Do we need to round up at all? If not, the string will just be truncated
            if (d1 == 9 && cutoff > 0) {// If the last digit is 9, find a new cutoff point
                while (cutoff > 0 && (d1 == 9 || isNaN(d1))) {
                    if (d1 != ".") {
                        cutoff -= 1;
                        d1 = Number(numString.substring(cutoff,cutoff+1));
                    } else {
                        cutoff -= 1;
                    }
                }
            }
            d1 += 1;
        } 
        newString = numString.substring(0,cutoff) + d1.toString();
    }
    if (newString.lastIndexOf(".") == -1) {// Do this again, to the new string
        newString += ".";
    }
    var decs = (newString.substring(newString.lastIndexOf(".")+1)).length;
    for(var i=0;i<decimals-decs;i++) newString += "0";
    return newString;
}

したがって、コードの 6 行目を次のように変更します。

listdata += "<td>"+ roundNumber(item.number, 5) +"</td>";
于 2012-12-08T23:48:59.607 に答える