【问题标题】:Converting number abbreviations (5.2k, 1.7m, etc) into valid integers with JavaScript使用 JavaScript 将数字缩写(5.2k、1.7m 等)转换为有效整数
【发布时间】:2012-01-12 16:39:18
【问题描述】:

我有一个 Google 文档,其中有一列包含各种用“速记”书写的数字,例如:

5k for 5,000
86.62k for 86,620
4.1m for 4,100,000
1.2b for 1,200,000,000

我想用 JavaScript(Google Docs 松散地使用)对这些数字进行一些计算,但我需要将它们转换为有效的整数才能这样做。我怎么能用 JavaScript 做到这一点?

我看到这是在 PHP (Converting number abbreviations (5.2k, 1.7m, etc) into valid integers with PHP) 中完成的,但在 JS 中没有找到任何东西。

【问题讨论】:

  • 语法几乎相同。只需删除$

标签: javascript google-docs


【解决方案1】:

删除最后一个字符并检查:如果 'k' 将字符串的其余部分乘以 1000,如果 'm' 乘以一百万。

【讨论】:

  • 谢谢! JS 完美运行,我想我会选择那个选项,因为我创建了一个将 M & B 转换为整数的疯狂公式: =iferror(if(find("B",C69)>0,substitute(C69," B","")*1000000000,""),替代(C69,"M","")*1000000)。谢谢你们!
【解决方案2】:
function convert( number )
{
  var base = parseFloat( number );
  if ( number.toLowerCase( ).match( /k/ ) )
  {
    return Math.round( base * 1000 );
  }
  else if ( number.toLowerCase( ).match( /m/ ) )
  {
    return Math.round( base * 1000000 );
  }
  else if ( number.toLowerCase( ).match( /b/ ) )
  {
    return Math.round( base * 1000000000 );
  }
}

【讨论】:

  • 注意:由于浮点数的奇妙,4.1m 的情况下给你4099999.9999999995 使用这个函数。您可能希望在乘法运算后使用 Math.round() 以得到正确的整数结果。请参阅 jsFiddle jsfiddle.net/jfriend00/8TERT
猜你喜欢
  • 2011-07-24
  • 2011-03-12
  • 2012-08-04
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多