![](/img/trans.png)
[英]converting string to float/number for numerical operations in 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.