JS中字串數字做四則運算時要注意的事項

2021-10-09 07:49:12 字數 902 閱讀 5009

在實際專案開發中發現了乙個特別有趣的現象,雖然並不是什麼高大上的東東,但應該算是前端js中常常會面臨到的乙個小小坑~這裡跟大家分享一下

var a = "12345", b = "6789";

console.log((a+b).tofixed(2));

console.log((a-b).tofixed(2));

console.log((a/b).tofixed(2));

console.log((a*b).tofixed(2));

先猜測一下輸出的結果會是什麼?

結果是:

uncaught typeerror: ("12345" + "6789").tofixed is not a function 

"5556.00"

"1.82"

"83810205.00"

檢視運算結果型別:

typeof("12345"-"6789") //number

typeof("12345"*"6789") //number

typeof("12345"/"6789") //number

typeof("12345"+"6789") //string

減、乘、除由於運算之後的結果變成了number型別,所以都可以正常呼叫tofixed,而字串運用加法後並沒有改變資料型別還是字串,故呼叫tofixed失敗!

這個在後台資料返回字串型別的數字,並且需要在前台做運算時,容易被忽略掉。

解決方案:

在做運算前,先parsefloat

(paesrfloat("12345")+parsefloat("6789")).tofixed(2) //"19134.00"

字串 四則運算

題目大意 有字串表示的乙個四則運算表示式,要求計算出該表示式的正確數值。四則運算即 加減乘除 另外該表示式中的數字只能是1位 數值範圍0 9 另若有不能整除的情況,按向下取整處理,eg 8 3得出值為2。若有字串 8 7 2 9 3 計算出其值為19。2012年華為上機的乙個題目 題目思路 建立棧分...

字串的四則運算

public string addstrings string num1,string num2 if b 0 tmp 10 return sb.reverse tostring 題目二 字串相減 給定兩個字串形式的非負整數 num1 和num2 計算它們的差。預設num1比num2大 注 不能使用...

字串的四則運算

四則運算,最常用的當然是逆波蘭方法,現將表示式由中綴表示式轉化為字尾表示式,然後再使用棧計算即可。這兩步下來,估計沒有三四百行 是實現不了的。中綴表示式轉字首字尾表示式 將中綴表示式轉換為字尾表示式的演算法思想 數字時,加入字尾表示式 運算子 a.若為 入棧 b.若為 則依次把棧中的的運算子加入字尾...