【问题标题】:Similar function in JavaScript to convert string/numberJavaScript 中用于转换字符串/数字的类似函数
【发布时间】:2018-05-01 07:39:23
【问题描述】:

我在 PHP 中有一个函数,它将一个数字插入到文本输入中并将其转换为浮点数,小数用逗号分隔。

之后,号码就被注册到数据库中了。

现在,我需要用 JavaScript(或 jQuery)做一些东西,做同样的转换。

$num = $_POST['precoItem'];//get the input value
$precoAd = tofloat($num);//convert it to float
$precoFinal = number_format($precoAd, 2, ',', '');//remove any 'dots' or 'spaces'

PHP函数toFloat()就是这个:

function tofloat($num) {
    $dotPos = strrpos($num, '.');
    $commaPos = strrpos($num, ',');
    $sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos : 
    ((($commaPos > $dotPos) && $commaPos) ? $commaPos : false);
    if (!$sep) {
        return floatval(preg_replace("/[^0-9]/", "", $num));
    } 

    return floatval(
         preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . ',' .
         preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num)))
     );
 }

例如,最后的数字不会有点或空格,只有逗号:例如:45354,85​​ (45.354,85​​)

我的JS知识有限。我尝试使用类似的东西:

var n = +$precoFinal;
var n = Number($precoFinal);
var n = parseFloat($precoFinal);

为什么人们这么喜欢投反对票……你真的要说我的问题没有经过任何研究吗?来吗?

【问题讨论】:

  • 你试过用JS写这样的函数吗?
  • parseFloat("1234.45") ?!
  • strrpos = indexOf, floatval = parseFloat, preg_replace = replace, substr = substr, strlen = length
  • 45354,85​​ 不是 JS 中的有效数字。您还需要用点替换逗号

标签: javascript jquery type-conversion


【解决方案1】:

试试这个:

var str = '45.354,85';
var num = str.split(/[\s.]+/).join('');
num = parseFloat(num.replace(",","."));
console.log(num);

【讨论】:

  • str.replace(/[\s.]+/g,''); 在我看来更优雅
  • console.log(parseFloat(num.replace(",","."));
  • 问题是数据库中注册的号码有逗号。所以,为了按照我需要的方式进行比较,输入的数字必须保持十进制逗号。
  • 所以你需要将其中一个转换为相同的格式....由于引擎不支持逗号作为十进制,你不能将它作为数字,它必须是一个字符串。
  • @epascarello thnx 提示,可能最好的方法是转换其他值。 Faly,谢谢你的回答,我赞成,因为它是有道理的,而且很有用。对于那些对我的问题投反对票的人,谢谢你投反对票而不解释原因,这表明你投反对票只是为了好玩。
猜你喜欢
  • 2019-04-14
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多