javascript - 为什么这段代码中的一个变量大于另一个?

标签 javascript comparison numeric

为什么rfd_total > max_rfd为真?我不明白以下代码中的 rfd_total 如何大于 max_rfd:

max_rfd = parseFloat(jQuery('#mx-rfd_'+order_id).val()).toFixed(2);

rfd_total = parseFloat(items_total+tax_total+shipping+allowances*1).toFixed(2);


if( rfd_total > max_rfd)
{   if(isNaN(rfd_total)) alert('rfd_total isNaN'); // not triggered
    if(isNaN(max_rfd)) alert('max_rfd isNaN'); // not triggered
    alert(rfd_total); // alerts 51.16
    alert(max_rfd); // alerts 102.32
    return false;
}

最佳答案

这是因为 rfd_totalmax_rfd 是字符串。

您会注意到 "51.16">"102.32" 返回 true。

toFixed() 返回一个字符串。

您需要将变量强制转换为数字,您可以通过快速搜索了解如何执行此操作。

或者你可以保持你的代码干净并使用像这样的函数正确地完成它

function decimalRoundTo(n, decimalPlaces) {
    var d = Math.pow(10, decimalPlaces);
    return Math.round(n*d)/d;
}

关于javascript - 为什么这段代码中的一个变量大于另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021220/

相关文章:

c++ - 使用 BCD 格式的数字除法

c - 稀疏矩阵线性和非线性方程求解器

sql - 如何确定字符串是否为 SQL 中的数字?

sql - 任何开源工具来比较 xml 和数据库行?

从 float 转换的 Ruby Time 对象不等于原始 Time 对象

javascript - CSS:如何在文本更改时向 div 宽度添加平滑移动?

javascript - AngularJS 组件和 ADAL(用于 JS 的 Active Directory Azure 库)

c# - FluentAssertions : ShouldBeEquivalentTo vs Should(). Be() vs Should().BeEquivalentTo()?

javascript - jQuery 切换不适用于 next() 函数

javascript - 构造 json 响应。 NodeJS 发送空响应