欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript中如何將字符串轉(zhuǎn)換成數(shù)字

 更新時間:2023年02月10日 09:50:52   作者:khan_talen  
這篇文章主要介紹了javascript中如何將字符串轉(zhuǎn)換成數(shù)字問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

轉(zhuǎn)換方法

  • 1、利用“-”、“*”、“/”、“%”、“++”、“--”等運算符;
  • 2、使用“Number(值)”語句;
  • 3、使用“parseInt(stringNum)”語句;
  • 4、使用“parseFloat(stringNum)”語句。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版。

javascript將字符串轉(zhuǎn)換成數(shù)字

方法1

使用-、*、/、%、++、--等運算符

JavaScript 會自動將字符串轉(zhuǎn)換成數(shù)字,對無法轉(zhuǎn)換為數(shù)字的則轉(zhuǎn)換為 NaN。例如:

alert("30"/5);   //除運算,結(jié)果為:6

alert("15"-5);   //減運算,結(jié)果為:10

alert("20"*"a"); //乘運算,結(jié)果為:NaN

alert("20"%"3"); //取模運算,結(jié)果為:2
var num1 = "6";

var num2 = "6";

var num3 = "a";

alert(++num1);  //將字符串轉(zhuǎn)換為數(shù)字再進行++運算,結(jié)果為:7

alert(--num2);  //將字符串轉(zhuǎn)換為數(shù)字再進行--運算,結(jié)果為:5

alert(++num3);  //字符串無法轉(zhuǎn)換為數(shù)字,結(jié)果為:NaN

方法2

使用Number()函數(shù)

Number()函數(shù)可以將參數(shù)轉(zhuǎn)換為一個數(shù)字

使用格式如下:

Number(value)

Number() 對參數(shù) value 進行整體轉(zhuǎn)換,當參數(shù)值中任何地方包含了無法轉(zhuǎn)換為數(shù)字的符號時,轉(zhuǎn)換失敗,此時將返回 NaN,否則返回轉(zhuǎn)換后的數(shù)字。

Number() 對參數(shù)進行數(shù)字轉(zhuǎn)換時,遵循以下一些規(guī)則:

  • 如果參數(shù)中只包含數(shù)字時,將轉(zhuǎn)換為十進制數(shù)字,忽略前導 0 以及前導空格;如果數(shù)字前面為-,-會保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號;
  • 如果參數(shù)中包含有效浮點數(shù)字,將轉(zhuǎn)換為對應的浮點數(shù)字,忽略前導 0 以及前導空格;如果數(shù)字前面為-,-會保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號;
  • 如果參數(shù)中包含有效的十六進制數(shù)字,將轉(zhuǎn)換為對應大小的十進制數(shù)字;
  • 如果參數(shù)為空字符串,將轉(zhuǎn)換為 0;
  • 如果參數(shù)為布爾值,則將 true 轉(zhuǎn)換為 1,將 false 轉(zhuǎn)換為 0;
  • 如果參數(shù)為 null,將轉(zhuǎn)換為 0;
  • 如果參數(shù)為 undefined,將轉(zhuǎn)換為 NaN;
  • 如果參數(shù)為 Date 對象,將轉(zhuǎn)換為從 1970 年 1 月 1 日到執(zhí)行轉(zhuǎn)換時的毫秒數(shù);
  • 如果參數(shù)為函數(shù)、包含兩個元素以上的數(shù)組對象以及除 Date 對象以外的其他對象,將轉(zhuǎn)換為 NaN;

如果在參數(shù)前面包含了除空格、+和-以外的其他特殊符號或非數(shù)字字符,或在參數(shù)中間包含了包括空格、+和-的特殊符號或非數(shù)字字符,將轉(zhuǎn)換為 NaN。

轉(zhuǎn)換示例:

alert(Number("0010")); ?//去掉兩個前導0,結(jié)果為:10

alert(Number("+010")); ?//去掉前導0和+,結(jié)果為:10

alert(Number("-10")); ?//轉(zhuǎn)換后保留“-”號,結(jié)果為:-10

alert(Number('')); ? ? ?//空字符串的轉(zhuǎn)換結(jié)果為:0

alert(Number(true)); ? //布爾值true的轉(zhuǎn)換結(jié)果為:1

alert(Number(null)); ? //null值的轉(zhuǎn)換結(jié)果為:0

var d = new Date(); ? ? ?//創(chuàng)建一個Date對象

alert(Number(d)); ? ? //轉(zhuǎn)換Date對象,結(jié)果為1970.1.1至執(zhí)行轉(zhuǎn)換時的毫秒數(shù):1511351635179

alert(Number("100px")); ? //參數(shù)中包含了不能轉(zhuǎn)換為數(shù)字的字符px,結(jié)果為:NaN

alert(Number("100 01")); ?//參數(shù)中包含了空格,導致整個參數(shù)不能轉(zhuǎn)換,結(jié)果為:NaN

alert(Number("100-123")); //參數(shù)中包含了“-”,導致整個參數(shù)不能轉(zhuǎn)換,結(jié)果為:NaN

var a; ? ? ? ? ? ? ? ? ? //聲明變量

alert(Number(a)); ? ? //變量a沒有賦值,因而a的值為undefined,轉(zhuǎn)換undefined的結(jié)果為:NaN

var fn = function (){alert(1);}; //創(chuàng)建一個函數(shù)對象

alert(Number(fn)); ? ? //轉(zhuǎn)換函數(shù),結(jié)果為:NaN

alert(Number(window)); //轉(zhuǎn)換window對象,結(jié)果為:NaN

從上述示例中,我們也可以看到,Number() 是從整體上進行轉(zhuǎn)換的,任何一個地方含有非法字符,都將導致轉(zhuǎn)換無法成功。

接下來將介紹的兩個函數(shù)與 Number() 不同的是,轉(zhuǎn)換是從左到右逐位進行轉(zhuǎn)換,任何一位無法轉(zhuǎn)換時立即停止轉(zhuǎn)換,同時返回已成功轉(zhuǎn)換的值。

方法3

使用parseInt()函數(shù)

parseInt()函數(shù)可以將參數(shù)轉(zhuǎn)換為一個整數(shù)

使用格式如下:

parseInt(stringNum,[radix])

stringNum 參數(shù)為需要轉(zhuǎn)換為整數(shù)的字符串;radix 參數(shù)為 2~36 之間的數(shù)字,表示 stringNum 參數(shù)的進制數(shù),取值為 10 時可省略。

parseInt() 的作用是將以 radix 為基數(shù)的 stringNum 字符串參數(shù)解析成十進制數(shù)。若 stringNum 字符串不是以合法的字符開頭,則返回 NaN;解析過程中如果遇到不合法的字符,將馬上停止解析,并返回已經(jīng)解析的值。

parseInt() 在解析字符串為整數(shù)時,遵循以下規(guī)則:

  • 解析字符串時,會忽略字符串前后的空格;如果字符串前面為-,-會保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號;
  • 如果字符串前面為除空格、+和-以外的特殊符號或除 a~f(或 A~F)之外的非數(shù)字字符,字符串將不會被解析,返回結(jié)果為 NaN;
  • 在字符串中包含了空格、+、-和小數(shù)點“。”等特殊符號或非數(shù)字的字符時,解析將在遇到這些字符時停止,并返回已解析的結(jié)果;
  • 如果字符串是空字符串,返回結(jié)果為 NaN。

轉(zhuǎn)換示例:

alert(parseInt("1101",2)); ?//以2為基數(shù)的1101字符串解析后的結(jié)果為:13

alert(parseInt("a37f",16)); //以16為基數(shù)的a37f字符串解析后的結(jié)果為:41855

alert(parseInt("123")); ? ? //以10為基數(shù)的123字符串解析后的結(jié)果為:123

alert(parseInt(" ?123")); ? //字符串前面的空格會被忽略,結(jié)果為:123

alert(parseInt("12 3")); ? ?//字符串中包含了空格,解析到空格時停止,結(jié)果為12

alert(parseInt("12.345")); //字符串中包含了小數(shù)點,解析到小數(shù)點時停止,結(jié)果為12

alert(parseInt("xy123")); ?//字符串前面包含了非數(shù)字字符“x”,無法解析,返回結(jié)果為:NaN

alert(parseInt("123xy4")); //字符串中包含了非數(shù)字字符“xy”,解析到“x”時停止,結(jié)果為:123

從上述示例我們可以看到,parseInt() 解析浮點數(shù)時,小數(shù)部分數(shù)據(jù)會被截掉,此時需要使用下面將介紹的 parseFloat(),而不能使用 parseInt()。

方法4

使用parseFloat()函數(shù)

parseFloat()函數(shù)可以將參數(shù)轉(zhuǎn)換為一個浮點數(shù)

使用格式如下:

parseFloat(stringNum)

stringNum 參數(shù)為需要解析為浮點型的字符串。

parseFloat() 的作用是將首位為數(shù)字的字符串轉(zhuǎn)解析成浮點型數(shù)。若 stringNum 字符串不是以合法的字符開頭,則返回 NaN;解析過程中如果遇到不合法的字符,將馬上停止解析,并返回已經(jīng)解析的值。

parseFloat() 在解析字符串為整數(shù)時,遵循以下規(guī)則:

  • 解析字符串時,會忽略字符串前后的空格;如果字符串前面為-,-會保留在轉(zhuǎn)換結(jié)果中;如果數(shù)字前面為+,轉(zhuǎn)換后將刪掉+號;如果字符串前面為小數(shù)點.轉(zhuǎn)換結(jié)果會在小數(shù)點前面添加 0;
  • 如果字符串前面為除空格、+、-和。以外的特殊符號,字符串將不會被解析,返回結(jié)果為 NaN;
  • 在字符串中包含了空格、+和-等特殊符號或非數(shù)字的字符時,解析將在遇到這些字符時停止,并返回已解析的結(jié)果;
  • 在字符串中包含兩個以上為小數(shù)點時,解析到第二個小數(shù)點時將停止解析,并返回已解析的結(jié)果;
  • 如果字符串是空字符串,返回結(jié)果為 NaN。

轉(zhuǎn)換示例:

alert(parseFloat("312.456"));//結(jié)果為:312.456

alert(parseFloat("-3.12"));//字符串前面的“-”將保留,結(jié)果為:-3.12

alert(parseFloat("+3.12"));//字符串前面的“-”將保留,結(jié)果為:3.12

alert(parseFloat(".12"));//在小數(shù)點前面添加0,結(jié)果為:0.12

alert(parseFloat(" ?3.12"));//截掉字符串前面的空格,結(jié)果為:3.12

alert(parseFloat("312.4A56"));//字符串中包含非數(shù)字字符A,解析到A時停止,結(jié)果為:312.4

alert(parseFloat("31 2.4A56"));//字符串中包含空格,解析到空格時停止,結(jié)果為:31

alert(parseFloat("31.2.5"));//字符串中包含兩個小數(shù)點,解析到第二個小數(shù)點時停止,結(jié)果為:31.2

alert(parseFloat("a312.456"));//字符串前面為非數(shù)字字符a,解析無法進行,結(jié)果為:NaN

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論