如何获取特定的最后一个十进制浮点值

时间:2014-03-03 02:45:56

标签: javascript

var fNum = parseFloat("32.23.45");导致32.23,但我需要从最后一个小数点开始的字符串:23.45

例如,以下字符串应返回以下值:

  • “12.234.43.234” - > 43.234,
  • “345.234.32.34” - > 32.34和
  • “234.34.34.234w” - > 34.34

2 个答案:

答案 0 :(得分:5)

一个相当直接的解决方案:

function toFloat(s) { 
    return parseFloat(s.match(/\d+(\.|$)/g).slice(-2).join('.')); 
}

例如:

toFloat("32.23.45")        // 23.45
toFloat("12.234.43.234")   // 43.234
toFloat("345.234.32.34")   // 32.34
toFloat("234.34.34.234w")  // 34.34

更新:这是一个替代版本,可以更有效地处理混合了非数字的字符串。

function toFloat(s) { 
    return parseFloat(s.match(/.*(\.|^)(\d+\.\d+)(\.|$)/)[2]); 
}

答案 1 :(得分:0)

以下内容将完全符合您的要求(我假设最后一个应该返回34.234,而不是34.24)。

alert (convText("12.234.43.234"));
alert (convText("345.234.32.34"));
alert (convText("234.34.34.234w"));

function convText(text) {
  var offset = text.length - 1;

  var finished = false;
  var result = '';
  var nbrDecimals = 0;

  while(!finished && offset > -1) {
    if(!isNaN(text[offset]) || text[offset] === '.') {
      if(text[offset] === '.') {
        nbrDecimals++;
      }

      if(nbrDecimals > 1) {
        finished = true;
      } else {
        result =  text[offset] + result;
      }
    }
    offset--;
  }

  return result;
}