js 數據類型轉換

前幾天寫微信小程序支付這一塊遇到點問題,最后解決發現是js數據類型轉換的原因:
這是后臺傳來的數據
 info: {
        explain: "提現至微信賬戶,1-5個工作日到賬",
        minAmount: 100, //最低提現金額
        ecacshStatus: 0, //0可提現,1提現中,2不可提現
        balance: "1.00"
      },
這是用戶需要輸入提現的金額
   input.inputClass(type="digit" :value="amount" @input="inputAmount")
點擊提交做判斷時出了問題:
 if (this.amount > this.info.balance) {
        wx.showModal({
          title: "提示",
          content: "余額不足",
          showCancel: false,
          confirmText: "確定"
        });
      } 

假設this.info.balance="30"元,用戶輸入的值拿到后為"5"(this.amount = "5"),兩個數作比較,這時if (this.amount > this.info.balance) 的結果為true... 所以就一直顯示余額不足,最后找到問題原因,發現輸入框里拿到的值類型為String,后臺傳來的值類型也是String,兩個字符串做比較時,只比較第一位的大小,也就是30元只比較第一位,(字符串'5' > 字符串'3'),

好吧,對于這種了解過但是很少遇到的實戰問題,基礎知識,這種錯誤確實不應該再犯了,所以今天做個筆記時刻提醒自己

首先不知道數據類型的情況下,先檢測數值的數據類型

typeof "John"                 // 返回 string
typeof 3.14                   // 返回 number
typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (如果 myCar 沒有聲明)
typeof null                   // 返回 object

JavaScript 類型轉換

(1) String() 可以將數字轉換為字符串。

該方法可用于任何類型的數字,字母,變量,表達式:

var x = 123;
String(x)   //123      // 將變量 x 轉換為字符串并返回
String(123) //123       // 將數字 123 轉換為字符串并返回
String(100 + 23) //123  // 將數字表達式轉換為字符串并返回
(2) 將字符串轉換為數字
第一種

字符串包含數字(如 "3.14") 轉換為數字 (如 3.14).
空字符串轉換為 0。
其他的字符串會轉換為 NaN (不是個數字)。

Number("3.14")    // 返回 3.14
Number(" ")       // 返回 0
Number("")        // 返回 0
Number("99 88")   // 返回 NaN

Number 方法 章節中,你可以查看到更多關于字符串轉為數字的方法:

其他方法:

parseFloat() 解析一個字符串,并返回一個浮點數:

<script>

document.write(parseFloat("10") + "<br>");
document.write(parseFloat("10.33") + "<br>");
document.write(parseFloat("34 45 66") + "<br>");
document.write(parseFloat(" 60 ") + "<br>");
document.write(parseFloat("40 years") + "<br>");
document.write(parseFloat("He was 40") + "<br>");

</script>
以上實例輸出結果:
10
10.33
34
60
40
NaN

parseInt() 解析一個字符串,并返回一個整數:


radix 代表進制數
parseInt("10");         //返回 10
parseInt("19",10);      //返回 19 (10+9)
parseInt("11",2);       //返回 3 (2+1)
parseInt("17",8);       //返回 15 (8+7)
parseInt("1f",16);      //返回 31 (16+15)
parseInt("010");        //未定:返回 10 或 8

Number 對象方法

| 方法 | 描述 |
| isFinite | 檢測指定參數是否為無窮大。 |
| toExponential(x) | 把對象的值轉換為指數計數法。 |
| toFixed(x) | 把數字轉換為字符串,結果的小數點后有指定位數的數字。 |
| toPrecision(x) | 把數字格式化為指定的長度。 |
| toString() | 把數字轉換為字符串,使用指定的基數。 |
| valueOf() | 返回一個 Number 對象的基本數字值。 |

toFixed()

方法可把 Number 四舍五入為指定小數位數的數字。

var num = 5.56789;
var n=num.toFixed(2);
n 輸出結果:
5.57


將一個數字,不留任何小數:
var num = 5.56789;
var n=num.toFixed();
n 輸出結果:
6
toPrecision() 方法
把數字格式化為指定的長度:

var num = new Number(13.3714);
var n=num.toPrecision(2);
n 輸出結果:
13


使用不同進制把數字格式化為指定的長度:

var num = new Number(13.3714);
var a = num.toPrecision();
var b = num.toPrecision(2);
var c = num.toPrecision(3);
var d = num.toPrecision(10);
a,b,c, 和 d 輸出結果:
13.3714
13
13.4
13.37140000
toString() 方法
把數字轉換為字符串:

var num = 15;
var n = num.toString();
n 輸出結果:
15


在本例中,我們使用不同進制把一個數字轉換為字符串:

var num = 15;
var a = num.toString();
var b = num.toString(2);
var c = num.toString(8);
var d = num.toString(16);
a,b,c, 和 d 輸出結果:

15
1111
17
f
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容

  • 概述 JavaScript 是一種動態類型語言,變量沒有類型限制,可以隨時賦予任意值。 上面代碼中,變量x到底是數...
    oWSQo閱讀 3,737評論 0 2
  • JavaScript 是一種弱類型的語言,也就是沒有類型限制,變量可以隨時被賦予任意值。同時,在程序運行過程中,類...
    胡小胖_閱讀 239評論 0 0
  • 1. 轉字符串 1.1 String(x) String函數可以將任意類型的值轉化成字符串。 數值:轉化為相應的字...
    sxfshdf閱讀 594評論 0 50
  • 轉布爾值 Boolean類型只有兩個字面值:true和false。在條件判斷時會出現假的(false)情況為:“ ...
    哎呦_連啓閱讀 960評論 0 4
  • ??引用類型的值(對象)是引用類型的一個實例。 ??在 ECMAscript 中,引用類型是一種數據結構,用于將數...
    霜天曉閱讀 1,078評論 0 1