js 字符串转换数字

js 字符串转换数字
js 字符串转换数字

js 字符串转换数字

方法主要有三种

转换函数、强制类型转换、利用js变量弱类型转换。

1. 转换函数:

js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这

两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。一些示例如下:

parseInt("1234blue"); //returns 1234

parseInt("0xA"); //returns 10

parseInt("22.5"); //returns 22

parseInt("blue"); //returns NaN

parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数

指定的,示例如下:

parseInt("AF", 16); //returns 175

parseInt("10", 2); //returns 2

parseInt("10", 8); //returns 8

parseInt("10", 10); //returns 10

如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地

得到八进制的值。例如:

parseInt("010"); //returns 8

parseInt("010", 8); //returns 8

parseInt("010", 10); //returns 10

parseFloat()方法与parseInt()方法的处理方式相似。

使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。

下面是使用parseFloat()方法的示例:

parseFloat("1234blue"); //returns 1234.0

parseFloat("0xA"); //returns NaN

parseFloat("22.5"); //returns 22.5

parseFloat("22.34.5"); //returns 22.34

parseFloat("0908"); //returns 908

parseFloat("blue"); //returns NaN

2. 强制类型转换

还可使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。ECMAScript中可用的3种强制类型转换如下:

Boolean(value)——把给定的值转换成Boolean型;

Number(value)——把给定的值转换成数字(可以是整数或浮点数);String(value)——把给定的值转换成字符串。

用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。

当要转换的值是至少有一个字符的字符串、非0数字或对象(下一节将讨论这一点)时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。

可以用下面的代码段测试Boolean型的强制类型转换。

Boolean(""); //false –empty string

Boolean("hi"); //true –non-empty string

Boolean(100); //true –non-zero number

Boolean(null); //false - null

Boolean(0); //false - zero

Boolean(new Object()); //true –object

Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。示例如下:

用法结果

Number(false) 0

Number(true) 1

Number(undefined) NaN

Number(null) 0

Number( "5.5 ") 5.5

Number( "56 ") 56

Number( "5.6.7 ") NaN

Number(new Object()) NaN

Number(100) 100

最后一种强制类型转换方法String()是最简单的,示例如下:

var s1 = String(null); //"null"

var oNull = null;

var s2 = oNull.toString(); //won’t work, causes an e rror

3. 利用js变量弱类型转换

举个小例子,一看,就会明白了。

上例利用了js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的

JS数学函数的调用

1 SQRT1_ 2 属性返回 2 的平方根的倒数。这个值近似为 0.7071067811865476。语法 Math.SQRT1_2 实例 返回 1/2 的平方根: 输出: SQRT1_2: 0.7071067811865476 2 SQRT2 属性返回 2 的平方根。这个值近似为 1.4142135623730951。 语法 Math.SQRT2 实例 返回 2 的平方根: 输出: SQRT2: 1.4142135623730951

3 strike() 方法用于显示加删除线的字符串。 语法 stringObject.strike() 实例 在本例中,"Hello world!" 将被加上一条删除线: 4 String() 函数把对象的值转换为字符串。 语法 String(object) 参数描述 object 必需。JavaScript 对象。 实例 在本例中,我们将尝试把不同的对象转换为字符串: 输出: Tue, 21 Feb 2017 10:51:34 UTC 例子 2 在下面的例子中,我们将把具体的日期转换为(根据 GMT)字符串: 输出: Wed, 20 Jul 1983 17:15:00 UTC 2 toLocaleDateString() 方法可根据本地时间把 Date 对象的日期部分转换为字符串,并返回结果。 语法 dateObject.toLocaleDateString() 返回值 dateObject 的日期部分的字符串表示,以本地时间区表示,并根据本地规则格式化 3 toLocaleLowerCase() 方法用于把字符串转换为小写。 语法 stringObject.toLocaleLowerCase() 返回值 一个新的字符串,在其中 stringObject 的所有大写字符全部被转换为了小写字符。 说明 与 toLowerCase() 不同的是,toLocaleLowerCase() 方法按照本地方式把字符串转换为小写。只有几种语言(如土耳其语)具有地方特有的大小写映射,所有该方法的返回值通常与 toLowerCase() 一样。 实例

c语言字符串与数字的相互转换

函数atof,atoi,atol,strtod,strtol,strtoul atof(将字串转换成浮点型数)相关函数atoi,atol,strtod,strtol,strtoul 表头文件#include 定义函数double atof(const char *nptr); 函数说明atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr 字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。 返回值返回转换后的浮点型数。 附加说明atof()与使用strtod(nptr,(char**)NULL)结果相同。 范例/* 将字符串a 与字符串b转换成数字后相加*/ #include main() { char *a=”-100.23”; char *b=”200e-2”; float c; c=atof(a)+atof(b); printf(“c=%.2f\n”,c); } 执行c=-98.23 atoi(将字符串转换成整型数)相关函数atof,atol,atrtod,strtol,strtoul 表头文件#include 定义函数int atoi(const char *nptr); 函数说明atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 返回值返回转换后的整型数。 附加说明atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例/* 将字符串a 与字符串b转换成数字后相加*/ #include mian() { char a[]=”-100”; char b[]=”456”; int c; c=atoi(a)+atoi(b); printf(c=%d\n”,c); } 执行c=356

【JS】Java判断字符串是否为空的三种方法

以下是Java 判断字符串是否为空的三种方法. 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低. 方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法. 方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二. 以下代码在我机器上的运行结果: (机器性能不一, 仅供参考) function 1 use time: 141ms function 2 use time: 46ms function 3 use time: 47ms */ public class CompareStringNothing { String s = ""; long n = 10000000; private void function1() { long startTime = System.currentTimeMillis(); for(long i = 0; i if(s == null || s.equals("")); } long endTime = System.currentTimeMillis(); System.out.println("function 1 use time: "+ (endTime - startTime) +"ms"); } private void function2() { long startTime = System.currentTimeMillis(); for(long i = 0; i< n; i++) { if(s == null || s.length() <= 0); } long endTime = System.currentTimeMillis(); System.out.println("function 2 use time: "+ (endTime - startTime) +"ms"); } private void function3() { long startTime = System.currentTimeMillis(); for(long i = 0; i if(s == null || s.isEmpty()); } long endTime = System.currentTimeMillis(); System.out.println("function 3 use time: "+ (endTime - startTime) +"ms"); }

c++将字符串转为数字——整型浮点型通用

注:没有编译过,若要复制可能需要改动内容。 此段代码,仅提供逻辑参考! double strTodouble(char *string) { String str = string; String strDes; //判断是否含有非法字符 if (*string == '+' || *string == '-') strDes = str.substr(1); else strDes = str; If(strDes.SpanIncluding(“+-0123456789.”) != strDes) { cout<<”非法的数值,无法转换”<='0' && *string <= '9' ) //不带正号的正数 p = string; double m = 0 , t; while(*p && (*p != '.'))//处理整数部分 { m = m*10 + (*p-'0'); p++; //移动指针 } if(*p == '.') //存在小数的情况 { p++; //略过小数点 while(*p) //处理小数部分,直到字符串结束 { int n = 0; n - -; t = pow(10.0 , n) m += (*p-'0')*t; } } if (*string == '-') //负数 m = 0-m; return m; }

相关文档
最新文档