[英]Javascript convert string to integer
嘗試這個 :
parseFloat(a.replace(/,/g, ''));
它也適用於: 1,800,300.33
示例:
parseFloat('1,700,800.010'.replace(/,/g, ''))
// 1700800.01
parseInt無法正常工作的原因是逗號。 您可以使用正則表達式刪除逗號,例如:
var num = '1,700.00';
num = num.replace(/\,/g,'');
這將返回一個帶有數字的字符串。 現在你可以解析了。 如果你沒有選擇基數,它將默認為10
,這是在這里使用的正確值。
num = parseInt(num);
在添加它們之前為每個字符串編號執行此操作,一切都應該有效。
有關mdn替換的更多信息:
`/` - start
`\,` - escaped comma
`/` - end
`g` - search globally
全局搜索將查找所有匹配(如果沒有此匹配,它將在第一次匹配后停止)
''
用空字符串替換匹配的部分,基本上刪除它們。
parseInt總是舍入到最接近的整數。 如果你需要小數位,你可以使用幾個技巧。 這是我最喜歡的:
2 places: `num = parseInt(num * 100) / 100;`
3 places: `num = parseInt(num * 1000) / 1000;`
有關parseInt的更多信息,請查看mdn 。
如果你不想舍入,也可以使用parseFloat。 我假設你做了,因為標題被轉換為整數。 一個很好的例子是由@ fr0zenFry在下面寫的。 他指出parseFloat也沒有采用基數,所以它始終在base10中。 有關更多信息,請參閱mdn 。
嘗試使用replace()
替換a ,
nothing
,然后使用parseFloat()
將數字替換為float。 從OP中的變量看來,似乎也可能存在小數,因此,在這種情況下, parseInt()
可能無法正常工作(十進制后的數字將被剝離)。
使用表達式中replace()
擺脫每次出現的,
。
var a = parseFloat('1,700.00'.replace(/,/g, ''));
var b = parseFloat('500.00'.replace(/,/g, ''));
var sum = a+b;
即使你的數字是1,700.55
分數,這也應該給你正確的結果。
如果我按你的問題的標題,你需要一個整數。 為此,您可以使用parseInt(string, radix)
。 它沒有radix
但是指定它總是一個好主意,因為你永遠不知道瀏覽器的行為方式(例如,請參閱注釋@Royi Namir)。 此函數將字符串舍入為最接近的整數值。
var a = parseInt('1,700.00'.replace(/,/g, ''), 10); //radix 10 will return base10 value
var b = parseInt('500.00'.replace(/,/g, ''), 10);
var sum = a+b;
請注意, parseFloat()
不需要基數,它將始終返回decimal / base10值。 此外,將將在后小數點末端剝去任何額外的零(例如: 17500.50
變得17500.5
和17500.00
變為17500
)。 如果您需要始終獲得2位小數,請將另一個函數附加到固定toFixed(decimal places)
。
var a = parseFloat('1,700.00'.replace(/,/g, ''));
var b = parseFloat('500.00'.replace(/,/g, ''));
var sum = (a+b).toFixed(2); //change argument in toFixed() as you need
// 2200.00
另一種替代方法是@EpiphanyMachine,它需要你乘以然后將每個值除以100
。 如果您希望將來更改小數位,則可能會出現問題,您必須更改每個變量的乘法/除法因子。 使用toFixed()
,您只需更改參數即可。 但請記住,與@EpiphanyMachine解決方案不同, toFixed()
會將數字更改回字符串 。 所以你將成為自己的判斷者。
Javascript不懂逗號。 像這樣刪除它:
a.replace(',', '')
一旦你擺脫了逗號,應該解析字符串沒有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.