首先,我遇到的情况不是自定义的数字,而是通过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 + "%";