在JS中怎么实现数字与C++整型和字符串相互转换换

博客分类:
最近经常遇到关于类型转换的问题,索性上网搜搜在此总结一篇
js字符转换成数字主要有三种可用的方法:转换函数、强制类型转换、利用js变量弱类型转换。
1. 转换函数:
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行,对其他类型返回的都是NaN
parseInt() 函数
可解析一个字符串,并返回一个整数。
parseInt(string, radix)
radix 可选。表示要解析的数字的基数(进制)。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
返回值:返回解析后的数字。
*如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN
*如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
*如果 string 以 0 开头,那么允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
*如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
一些示例如下:
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 10
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
parseFloat() 函数可解析一个字符串,并返回一个浮点数。
该函数判断字符串中的首个字符是否是数字,如果是,则对字符串进行解析,然后以数字返回该数字,而不是作为字符串。
*如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。
*可以通过调用 isNaN 函数来判断 parseFloat 的返回结果是否是 NaN。
*开头和结尾的空格是允许的。
*如果只想解析数字的整数部分,请使用 parseInt() 方法。
示例如下:
parseFloat("1234blue"); //returns 1234
parseFloat("0xA"); //returns 0
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat 针对开头为 0 0的处理
parseFloat("blue"); //returns NaN
parseFloat()方法与parseInt()方法相似,不同之处在于,parseFloat必须以十进制形式表示浮点数,没有基模式。
2.强制类型转换
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
3. 利用js变量弱类型转换
举个小例子,一看,就会明白了。
var str = 5332355';
var x = str - 0;
x = x * 1;
利用了js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的。存在一些安全问题。
浏览: 34715 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
遇到了一个问题,我的页面中有输入框供用户输入数字,但是如果用户输入的数字过大的话,js会自动转换成科学计数法显示。但是我还需要把用户输入的内容发送到后台以及展示在页面中。这样的话在页面中也展示了科学计数法,影响用户体验。而且后台也无法识别这个科学计数法的数字,造成错误。由于我需要拿用户输入的内容来进行加减运算,所以不能把输入的内容转换成字符串。所以,希望大家能够提供一些方法或者思路,将这个自动转换出来的科学计数法再转换成数字或者字符串。我写了一个小demo,类似于下面的情况:
var a = 111;
var b = 222;
var c = a +
console.log(a);
console.log(b);
console.log(c);
这段代码的输出结果是:我期望的输出结果是:
希望大家可以提供一些方法或者思路,谢谢大家~百度的方法基本都试过了,都没有效果。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
var num = new Number('1.111e+84')
num = num.toLocaleString()
然而在转成科学计数法的时候能够保留的小数位数有限 ——。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
由于我需要拿用户输入的内容来进行加减运算,所以不能把输入的内容转换成字符串。
本质上不是什么“使用哪种方式显示数字”的问题。
在你的数字过大场景下,前端没有 Decimal 这种类型,或者你找专门的 js 的库来做,比如 ,否则精度无法保存,结果也就无法保证的。
另一种方法,就是让后端提供“运算服务”,你传字符串,得到的也是字符串,比如传: op=add&args=12345,1 ,后端响应 12346 。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
其实我也是最近遇到这个问题,我发现 0. 这样的数字会被转成科学计数法,但是小数点前面要是有一个非0的数字就不会自动转了,所以我是这么搞的,测试了常见的浏览器没有啥问题:
let num = 0.;
let result = String(num);
// 判断一下有没有减号
if (result.indexOf('-') &= 0) {
result = '0' + String(Number(result) + 1).substr(1);
现在的result应该是没有问题了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
今天遇到这个问题。。。。
function sumStrings(a, b) {//输入的a,b都是只包含数字的字符串
output = a * 1 + b * 1;//转换为数字
if (output.toString().indexOf("+") == -1) {//判断不为科学计数法输出
output = output.toString();
} else {//判断为科学计数法输出
a = a.split("");//字符串分割数组
b = b.split("");//字符串分割数组
if (a.length & b.length) {
output = test(a, b);
output = test(b, a);
//把科学计数法准换为数字
function test(a, b) {//要求a的长度比b的长度大
var i, arr = [],
for (i = 0; i & a. i++) {
if (i & b.length) {//在共有的位进行操作
var c = a[a.length - i - 1] * 1 + b[b.length - i - 1] * 1;//取得同位相加数
if (c & 10) {//判断同位相加数小于10
if (j + c === 10) {//判断位数加进位数为10
arr.unshift(0);//位数为0
j = 1;//重置进位为1
} else {//判断位数加进位数不为10
arr.unshift(j + c);//位数为进位加同位相加数
j = 0;//重置进位为0
} else {//判断同位相加数大于等于10
arr.unshift(c + j - 10);//位数为c+j-10
j = 1;//重置进位为1
} else {//非共有的位操作
var c = a[a.length - i - 1] * 1;//取得位
if (j === 1) {//进位判断
if ((j + c) === 10) {//判断位数加进位数为10
arr.unshift(0);//位数为0
j = 1;//重置进位为1
} else {//判断位数加进位数不为10
arr.unshift(j + c);//位数为进位加同位相加数
j = 0;//重置进位为0
arr.unshift(c);//进位为0,直接放入
if (j === 1) { arr.unshift(1) }//最后判断若a和b同长度,且首位相机大于等于0是,数组添加一位1
return arr.join("");//最后字符串形式输出
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
js中将字符串转换成数字以便运算
摘要:&&在js中,如果两个数字都是从字符穿中提取的,那么想要让这两个数据进行数字相加时,如果直接用加号将两者进行运算。那么我们得不到数字运算的结果,而仅仅是两个数字拼接在一起的字符串。&&所以使用parseInt('4'),可以将字符串数字转换成数字,然后可以进行数字运算!本文出自“linux要从娃娃抓起”博客,请务必保留此出处http://wanqiufeng.blog.51cto.com/728
& &在js中,如果两个数字都是从字符穿中提取的,那么想要让这两个数据进行数字相加时,如果直接用加号将两者进行运算。那么我们得不到数字运算的结果,而仅仅是两个数字拼接在一起的字符串。
& &所以使用parseInt('4'),可以将字符串数字转换成数字,然后可以进行数字运算!
本文出自 “linux要从娃娃抓起” 博客,请务必保留此出处http://wanqiufeng.blog.51cto.com/728
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
新用户大礼包!
现在注册,免费体验40+云产品,及域名优惠!
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
js中将字符串转换成数字以便运算相关信息,包括
的信息,所有js中将字符串转换成数字以便运算相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
InternationalJS对象到字符串,对象到数字的转换细节 - 简书
JS对象到字符串,对象到数字的转换细节
本文提到的对象到字符串和数字的转换规则只适用于本地对象。什么是本地对象呢?本地对象也叫做内置对象,也就是JS标准规范定义的对象或类。比如Array, object, function, data, global。还有一类对象即宿主对象,顾名思义,宿主,宿主,就要有一个寄生的对象和环境,在JS中宿主对象都是寄生在浏览器中的。在浏览器中才存在的对象。比如event,BOM 和DOM对象皆是。
本地对象都继承了俩个转换方法,toString()与valueOf()。
对象到字符串的转换过程
toString()方法用在对象上面,比如function, array,object,返回的值都差不多,都是返回这个对象的源码。但是是以字符串表示的形式。例如:
var a = [1,2]; var b = a.toString(); console.log(b); //1,2 //"string"
函数类返回的结果也类似,可以从下面的实例中看出来:
var fun = function() { return "hello world!"; } var obj = fun.toString(); console.log(obj); //function () { return "hello world!"; } //"string"
valueOf存在任意原始值,它就默认将对象转换为表示它的原始值。如果是复合值呢,和toString方法一样,即返回本身。但是还是和toString()方法有区别,tostring返回的是以字符串形式表示,valueOf()返回的是以对象的形式表示:
var arr = [true, "string"]; var obj = arr.valueOf(); console.log(obj); // [true, "string"] //"object"
var a = {}; a.toString(); a.valueOf(); //"[object Object]" //Object {}
对象是空对象时,不管是toString方法或者valueof返回的形式有点让人很迷惑,toString()看上去更上一个对象的表示,不过对他们用typeof以查看就清楚了然了,toString返回的确是一个字符串表示的对象形式,而valueof返回的才是真正的对象。
var b = a.toString(); var c = a.valueOf(); console.log(typeof b); //string console.log( typeof c) //object
如果让对象和进行比较呢 ?又会发生什么,比如:
var a = {}; var c = a.toString(); console.log(a==c); // true
这里在进行比较的时候,我们可以看到,a在执行了toString方法之后,就是一个字符串,但是在比较的时候,既字符串和对象比较的时候,返回的是true,a是一个对象,在比较时发生了隐式的类型转换。遵循对象到字符串先调用tostring的方法。那如果我们手动把a用valueOf转换一下呢。 比如:
var d = a.valueOf(); console.log(d==c); // true
console.log(c); // [object Object] console.log(d); // Object {} console.log(d===c);
情况还是和上面是一样的,但是如果不想他们进行自动转换就要使用严格相等了,这样的情况下,我们可以很清楚的看到返回的false。
console.log(d===c); // false
数组的在执行了之上的过程也是一样的。在此就不赘述了。
对象到字符串的转换
首先调用toString方法,只有当toString不返回一个原始值的时候,才会调用valueOf()。toString方法但是基本上所有对象都返回字符串。所以对象到字符串形式的转换基本都是使用toString方法。
俩个方法都不返回原始值时,会抛出错误。
对象到数字的转换过程
首先调用的valueOf(),如果返回原始值,将原始值转换为数字并返回。valueOf,基本上所有的 对象返回的都是对象,虽然先使用valueOf,但是实际上也是使用的toString的方法。
我们明白了这些规则有什么用?比如为什么空数组转换为数字是?单个数组的元素为数字的同样转换为一个数字
var rr = [], dd = 2; console.log(rr & dd); // true
为什么返回true,因为在执行比较的时候,是对象和数字的比较,需要先把对象转换数字,先把rr对象进行隐式的类型转换,调用valueOf方法,但是返回的是一个对象,所以调用toString,toString方法返回的是一个空的字符串,空的字符串直接转换为0;JS引擎在内部运算的时候,我的理解是隐形的执行了这些元算;
var gg = rr.toString(); Number(gg); //0
运算符,及其他比较大小的运算符时,都会做对象到原始值的转换,对象到原始值的转换基本都是对象到数字的转换,但是要除去日期对象的特殊情形,日期对象 到原始值转换规则为对象到字符串模式。本篇文章是对《JS权威指南》第三章对象到原始值的转换的一个读书笔记。如果有什么的描述的不对,敬请指正!
强制转换 强制转换主要指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。 Number函数:强制转换成数值 使用Number函数,可以将任意类型的值转化成数字。 (1)原始类型值的转换规则 数值:转换后还是原来的...
变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者下滑线变量名不得为保留字需要声明并初始化变量,可以为变量分配null值声明了变量但是不为其赋值。该值为undefined。consolo...
有人说过,很多弯路到最后都成了直路,所有的坑到最后也都成了坦途;所谓的直路和坦途并不是摆在眼前的,都是不断的的绕弯过程中掰正捋直的,都是摔得鼻青脸肿之后填平的。从离开学校到北京工作也算有一年的时间了,只感觉这一年过的不算充实,也不算空虚,有所进步,但幅度不大,绕了些弯也...
幸福的节日总是相似的,不幸的节日各有各的不幸。昨天是十一月最后一个星期四,美国的感恩节,这个西方的节日渐渐被国人所热衷,借节日文化,洗涤心灵,懂得珍惜,学会感恩,这本是一种文化的熏陶,一种文明的进步。 可是,就在刚刚过去的感恩节夜,广州第十二人民医院急诊科被就诊患者及家属因...
转眼间2016年结束,2017年即将开始。如果用一个词来形容一下我的2016年,那就是得偿所愿。
2016年8月,我突然恶心到不行,我的宝宝突然到来。现在已经6个月了,2017年4月他会来到这个世界。一切得偿所愿。
2016年5月到12月,我换了一个离上班地点更近也更...
非常开心今天早上就听到了天哥的声音,他还跟我们分享了一张有大大的圆月的即时照片。 今天的会议主题是RPA系统,在8.2.3号那天有幸听叶老师现场讲过,那时候就觉得非常喜欢,这其实从进入天使班学习后一直在做的。因为这就是不断精进的一个模式,不管是学习,工作,生活,健康,饮食习...
抬头 坐下 环顾四周 叹气! 抬头 一蹬腿 软绵绵地站起来 走! 谁都有梦 谁不为梦奋斗?我怎么能退缩? 1步2步3步...... 先歇歇 实在有太多别人无法承受的东西 该歇歇 抬头 坐下 环顾四周 ......
本周的《奔跑吧》即将迎来收官之作,“陆地CP”究竟是导演组故意为之,还是天作之合,也只有当事人自己知道。但小编今天想和大家分享的热巴瘦腿大法是真的有效哦,拿好不谢! 热巴 自上《奔跑吧》以来, 就独得导演组恩宠。 这里与鹿晗的“陆地夫妇”, 引来粉丝一片热议; 那里又以“吃...JavaScript数字和字符串转换示例
转载 &更新时间:日 11:29:03 & 作者:
这篇文章主要介绍了JavaScript数字和字符串转换的应用,需要的朋友可以参考下
1. 数字转换为字符串 a. 要把一个数字转换为字符串,只要给它添加一个空的字符串即可:
代码如下: var n = 100; var n_as_string = n + "";
b. 要让数字更加显式地转换为字符串,可以使用String()函数:
代码如下: var string_value = String(number);
c. 使用toString()方法:
代码如下: string_value = number.toString();
Number对象的(基本的数字转换为Number对象,以便可以调用这个方法)toString()方法有一个可选的参数,该参数用来指定转换的基数。如果不指定这个参数,转换会以10为基数进行。然而,也可以按照其他的基数(2到36之间的数)来转换数字。 例如:
代码如下: var n = 17; binary_string = n.toString(2); // Evaluates to "10001" octal_string = "0" + n.toString(8); // Evaluates to "021" hex_string = "0x" + n.toString(16); // Evaluates to "0x11"
d. toFixed()方法把一个数字转换为字符串,并且显示小数点后的指定的位数。它不使用指数表示法。
代码如下: var n = ; n.toFixed(0); // "123457" n.toFixed(1); // ""
e. toExponential()使用指数表示法把一个数字转换为字符串,小数点前面有1位数,而小数点后面有特定的位数。
代码如下: var n = ; n.toExponential(1); // "1.2e+5" n.toExponential(3); // "1.235e+5"
f. toPrecision()使用指定的有意义的位数来显示一个数字,如果有意义的位数还不够显示数字的整个整数部分,它就使用指数表示法。
代码如下: var n = ; n.toPrecision(4); // "1.235e+5" n.toPrecision(7); // ""
2. 字符串转换为数字 a. 将一个字符串转换为数字的一种缺少些技巧但是很清楚明白的方法就是:把Number()构造函数作为一个函数来调用:
代码如下: var number = Number(string_value);
b. parseInt()只截取整数,如果一个字符串以"0x"或"0X"开头,parseInt()将其解析成为一个十六进制的数字,parseInt()甚至可以接受一个参数来指定要解析的数字的基数,合法的值在2到36之间。
代码如下: parseInt("3 blind mice"); // Returns 3 parseInt("12.34"); // Returns 12 parseInt("0xFF"); // Returns 255 parseInt("11", 2); // Returns 3 (1 * 2 + 1) parseInt("ff", 16); // Returns 255 (15 * 16 + 15) parseInt("zz", 36); // Returns 1295 (35 * 36 + 35) parseInt("077", 8); // Returns 63 (7 * 8 + 7) parseInt("077", 10); // Returns 77 (7 * 10 + 7)
c. parseFloat()截取整数和浮点数。
代码如下: parseFloat("3.14 meters"); // Returns 3.14
d. 如果parseInt()和parseFloat()不能够把指定的字符串转换为数字,它们就会返回NaN:
代码如下: parseInt(''eleven"); // Returns Nan parseFloat("$72.47"); // Returns NaN
3 JavaScript取整的方法 a.丢弃小数部分,保留整数部分 parseInt(5/2) b.向上取整,有小数就整数部分加1 Math.ceil(5/2) c.向下取整 Math.floor(5/2) d.四舍五入 Math.round(5/2)
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 整型和字符串相互转换 的文章

 

随机推荐