比较JavaScript中的两个浮点数

时间:2011-06-16 14:25:51

标签: javascript floating-point

如何在JavaScript中比较两个浮点数?或者也许是一个浮点数和一个int。

if (5 > 4.3.3)

if (5.0 > 5.3)

感谢所有输入!

更新

我需要一个我在Appcelerator中开发的iPhone应用程序。我需要比较iOS版本并向每个版本显示不同的内容。因此,如果设备运行5.0而另一台设备运行4.3.3我需要知道我的代码中的差异。

3 个答案:

答案 0 :(得分:3)

就像那样。

if (5.0 > 5.3)

在您的第一个示例中,您没有有效的数字[4.3.3]。

答案 1 :(得分:1)

您可以使用http://maymay.net/blog/2008/06/15/ridiculously-simple-javascript-version-string-to-object-parser/

的内容

基本上他使用:

function parseVersionString (str) {
    if (typeof(str) != 'string') { return false; }
    var x = str.split('.');
    // parse from string or default to 0 if can't parse
    var maj = parseInt(x[0]) || 0;
    var min = parseInt(x[1]) || 0;
    var pat = parseInt(x[2]) || 0;
    return {
        major: maj,
        minor: min,
        patch: pat
    }
}

答案 2 :(得分:0)

基本比较器如下所示:

  1. Convert to correct positional structure
  2. Compare lengths
  3. Compare values

function compareVer(a, b, sep = '.') {
  // 1. Convert to correct positional structure
  const aP = a.split(sep);
  const bP = b.split(sep);
  // 2. Compare lengths 
  if (aP.length > bP) return 1;
  if (bP.length > aP) return -1;
  for (let i = 0; i < aP.length; ++i) {
    // 3. Compare values
    // You can add necessary type conversions 
    // Ex.: add parseInt, if you want to support `001=1` and not `3f=3f`
    if (aP[i] > bP[i]) return 1;
    if (bP[i] > aP[i]) return -1;
  }
  return 0;
}


console.log(compareVer('5', '4.3.3'));      //  1  gt
console.log(compareVer('5.0.2', '5.0.2'));  //  0  eq
console.log(compareVer('5.0', '5.3'));      // -1  lt