簡體   English   中英

在Javascript中將字符串轉換為負浮點數

[英]Converting string into negative float number in Javascript

我從后端應用程序獲得的負數值是根據我們的內部配置(UI用戶配置文件)進行格式化的。 換句話說,對於值-23.79879,我的xml輸入可能是<myNumber>-23.79879</myNumber><myNumber>23,79879-</myNumber>或其他
而且我無法關閉格式。
假定格式是“標准”格式,通常用於本地化。
我正在尋找類似的東西:

convertStringToNumber(numberString, formatString, slignPosition)

不確定您對formatString的含義,但也許是這樣的:

function convertStringToNumber(num){
    num=num.split(',').join('.');
    if(num.indexOf('-') ==num.length-1){
        num='-'+num.substr(0,num.length-1);
    }
    return parseFloat(num) || null;
}



console.log(convertStringToNumber("-23.79879"))
console.log(convertStringToNumber("23,79879-"))

實現此目的的最簡單方法是從后端公開解析規則,而后者顯然知道格式。 這可以通過多種方式完成,但是我喜歡的一種簡單方法就是簡單地分解格式的所有移動部分,為對象上的每個部分定義屬性,然后將該對象公開給解析器。

該對象可能看起來像這樣:

var opts =  {
  thousandsSeparator: ',',
  decimalSeparator: '.',
  negativeSign: '-'
};

然后將該對象傳遞給這樣的解析函數:

function parseNumber(opts, str) {
      var isNegative = false;
        if(str.indexOf(opts.negativeSign) != -1) {
            isNegative = true;
            str = str.replace(opts.negativeSign,'');
        }
        var parts = str.split(opts.thousandsSeparator).join('').split(opts.decimalSeparator);
        var num = 1 * parts[0];
        var deci = 1 * parts[1];
        if(deci) num += deci /  Math.pow(10,parts[1].length);
        return isNegative ? -1 * num : num;
}

然后,您將其稱為thuis:

parseNumber(選擇采用, '2,345.234-'); //-2345.234

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM