js中做数字运算时出现的异常,期望值比实际值小太多太多

首先,我遇到的情况不是自定义的数字,而是通过ajax从后端获取的json数据中解析出来的数字。

举个栗子:我想要的结果是 物料差缺率=差缺总数/(差缺总数+齐套总数)

//齐套总数
var fullTotal = data1.titlemap[0].full_total;//差缺总数
var lackTotal = data1.titlemap[0].lack_total;
//差缺率
var rate = lackTotal / (lackTotal+fullTotal);

打印出来的rate的值比预期的要小很多,原来问题出在了数据类型上。fullTotal和lackTotal的类型其实后台统一传成了字符类型,所以(lackTotal+fullTotal)的值并不是两个数字相加,而是两个字符的连接。比如两个值分别为’123’和’124’,那个rate的值为 124/124123 的结果,所以才会比预期的要小很多。

所以,这里需要将fullTotal和lackTotal的值先转换成数字类型,再进行运算。

可以使用parseInt() parseFloat() Number() 函数将字符转换成数值,再进行运算;
也可以 “一元运算符” 将字符型快速转换成数值类型


"1.23" * 1; 		// returns 1.23
"0xFF" - 0; 		// returns 255
"12.3" / 1; 		// returns 12.3
"023" + 0; 			// returns 23

所以,最后的物料差缺率为:

var fullTotal = data1.titlemap[0].full_total;
var lackTotal = data1.titlemap[0].lack_total;
var rate = Math.round(lackTotal / (lackTotal*1+fullTotal*1) * 10000) / 100.00 + "%";
发布了92 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41885819/article/details/103485079
今日推荐