如何在jquery中以json的形式获取数据时浮点数?

时间:2012-12-08 23:44:59

标签: php javascript jquery json

我的问题是在jquery中浮动数字。我在这个网站上看了一些关于它的问题,但我找不到我看的东西。

在我的部分代码中,我在jquery中使用了$.post。我向数据库发送请求并以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 个答案:

答案 0 :(得分:2)

var number = 345.54565000000​;

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

FIDDLE;

如果该分隔符实际上是逗号,则必须将其替换为.replace(',', '.')

答案 1 :(得分: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>";

答案 2 :(得分:1)

我假设你有逗号,并且你想坚持使用逗号,这样就可以打破任何与Float相关的功能,所以...快速而又脏,但是能完成这项任务:

<强>替换

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

。通过

listdata += "<td>"+parseFloat(item.number.replace(',', '.')).toFixed(5).replace('.', ',')+"</td>";

答案 3 :(得分:1)

我找到的最快的方式是

((number * Math.pow(10, numberOfDigits)) | 0) / Math.pow(10, numberOfDigits)
编辑:忘了Math.pow,这很重要。