jQuery条件十进制大于比较

时间:2018-09-16 05:39:50

标签: jquery

我有一个奇怪的问题,我不确定如何解决,但是就解决了。

我从AJAX查询中得到了回报,这就是返回两部分的方式(以及它们在预览面板中的外观):

id:1
paid: "158.40"
balance: "79.20"

所以最初,我只是尝试了以下方法(注意到一个问题之后):

if(item.balance > item.paid){
   var test = "balance greater than paid";
}else{
   var test = "balance is not";
}

但是在上述情况下,它返回第一个test,意味着在某个地方,它认为79.20大于158.40,这显然不是我想要的。

所以我尝试了这个:

var paid = parseFloat(item.paid).toFixed(2);
var balance = parseFloat(item.balance).toFixed(2);

只需将上述条件语句的第一行切换为if(balance > paid),它仍然做同样的事情...

所以,如果有人可以帮助我,我很茫然-我将非常感激。

4 个答案:

答案 0 :(得分:2)

在比较这些值时不要使用toFixed,因为它只是为您提供了另一个字符串,该字符串无法以您尝试的方式进行数字比较。只需比较parseFloat的输出即可。

var paid = "158.40";
var balance = "79.20";

$(".string").text(paid > balance);

paid = parseFloat("158.40");
balance = parseFloat("79.20");

$(".float").text(paid > balance);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>

  String compare:
  <span class="string">

</span>
</div>

<div>
  Float compare:
  <span class="float">

</span>
</div>

答案 1 :(得分:1)

按如下所示使用它

var paid = parseFloat(item.paid);

var balance = parseFloat(item.balance);

然后进行比较,它将使您处于正确的状态

上面您使用的是toFixed,它再次返回字符串。

答案 2 :(得分:0)

尝试使用Number()首先将字符串转换为数字

if(Number(item.balance) > Number(item.paid)){
   var test = "balance greater than paid";
}else{
   var test = "balance is not";
}

答案 3 :(得分:0)

引用toFixed方法,它返回的是String,而不是Number。因此,不期望比较结果。您的案例无需调用此方法。如果您对精度有疑问,请查看this question

var item = {
  id: 1,
  paid: "158.40",
  balance: "79.20"
};
var paid = parseFloat(item.paid);
var balance = parseFloat(item.balance);
console.log("paid=" + paid);
console.log("balance=" + balance);
console.log("paid>balance=" + (paid > balance));