前段时间,由于项目比较着急上线。在实现一个计算功能的时候,我偷了点懒,选择了后台进行计算。感觉实现起来更简单,毕竟前台代码写的不是很多。随着时间的推移,后台处理数据出现了很多问题,一番重构后,计算和数据的处理都挪到了前台。过程很痛苦,很多细节让人抓狂,这就是实习的魅力!所有的经历都是慢慢的成长!这里拿出来和大家一起分享一下。
一、数据类型问题
1、使用正确的数据类型:
因为我们要进行数值计算,所以这里要使用数值类型,也就是Number类型。(相对应的还有NaN类型即not a number 。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。
NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身
)。PS:如果你要比较两个数值的大小,最好使用数值类型来进行计算和比较。
2、强制类型转换:
有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()
二、如何四舍五入?
使用 toFixed函数。
三、千分位处理问题(显示、去除)
显示:(s是你要处理的数值对象,必须为数值类型)
<span style="font-family:KaiTi_GB2312;font-size:18px;"> </span><pre name="code" class="javascript"><span style="font-family:KaiTi_GB2312;font-size:18px;">function(s){
var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1];
t = "";
for (i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").reverse().join("") + "." + r;
}</span>
去除千分位的显示
<span style="font-family:KaiTi_GB2312;font-size:18px;">function(value){
var noThousands = Number(0);
noThousands = value.replace(/,/g, '')
return noThousands ;
}</span>
四、输入的过滤(正则表达式):限制只能输入数字和小数点
replace(/[^\d\.-]/g, "")
五、小结:
如果要将以上的代码整合到一起的话,其实也简单。给出一个自己在项目中应用的实例,希望对大家能有借鉴作用。
function <span style="font-family:KaiTi_GB2312;">ParseToThousands</span>(s, n) {
//<param>s</param>资金<param>n</param>小数点后保留位数如果是非零值或"",则返回"0.00"</summary>
if (isNaN(s) || s == "") return "0.00";
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1];
t = "";
for (i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").reverse().join("") + "." + r;
}
总结:
心态积极向上,找准定位,享受好自己的每一天,经营并总结好每一天。快乐做好自己,甚好!在大公司工作或者实习,我能学到什么不一样的东西。咱们都需要一些时间来独立思考和总结,而不是焦虑和紧张。让我们忘掉进度的烦恼吧,因为那是咱们早晚都要学的东西。也请不要再和其他人做什么对比了,不要给自己辣么大压力。只要自己每天都在进步就好。和自己比,是不是今天比昨天做的好辣么一点。这就是一件很幸福的事情。
推荐文章:关于js的数据类型操作