我有一个奇怪的问题,我不确定如何解决,但是就解决了。
我从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)
,它仍然做同样的事情...
所以,如果有人可以帮助我,我很茫然-我将非常感激。
答案 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));