山东标梵js效果和 加减乘除计算 (防止精度丢失)
作者:互联网
在我们开发中,有时候不需要后端去计算东西,前端直接计算,这个时候如果使用js去直接计算整数还可以,不过如果计算小数可能造成丢失精度,下面是在遇到计算场景中使用的方法。分享一下!希望有所帮助!
两个浮点求和:
// 两个浮点数求和
function accAdd(num1,num2){
var r1,r2,m;
try{
r1 = num1.toString().split('.')[1].length;
}catch(e){
r1 = 0;
}
try{
r2=num2.toString().split(".")[1].length;
}catch(e){
r2=0;
}
m=Math.pow(10,Math.max(r1,r2));
// return (num1*m+num2*m)/m;
return Math.round(num1*m+num2*m)/m;
}
两个浮点求差:
// 两个浮点数相减
function accSub(num1,num2){
var r1,r2,m;
try{
r1 = num1.toString().split('.')[1].length;
}catch(e){
r1 = 0;
}
try{
r2=num2.toString().split(".")[1].length;
}catch(e){
r2=0;
}
m=Math.pow(10,Math.max(r1,r2));
n=(r1>=r2)?r1:r2;
return (Math.round(num1*m-num2*m)/m).toFixed(n);
}
两个浮点相除:
// 两个浮点数相除
function accDiv(num1,num2){
var t1,t2,r1,r2;
try{
t1 = num1.toString().split('.')[1].length;
}catch(e){
t1 = 0;
}
try{
t2=num2.toString().split(".")[1].length;
}catch(e){
t2=0;
}
r1=Number(num1.toString().replace(".",""));
r2=Number(num2.toString().replace(".",""));
return (r1/r2)*Math.pow(10,t2-t1);
}
两个浮点相乘:
// 两个浮点数相乘
function accMul(num1,num2){
var m=0,s1=num1.toString(),s2=num2.toString();
try{m+=s1.split(".")[1].length}catch(e){};
try{m+=s2.split(".")[1].length}catch(e){};
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}
这里在分享一个前端博客常用的动态效果
点线粒子
❝
可根据自己需求去调节粒子多少。
参数说明:
color="255,0,0" 背景粒子线的颜色
opacity="0.5" 背景粒子线的透明度,一般设置成0.5-1之间
count="99" 背景粒子线的密度,建议不要太大,否则页面容易卡死
❞
<scripttype="text/javascript"color="255,0,0"opacity="0.5"count="99"src="canvas-nest.js"></script>
点击效果
<script src="https://files.cnblogs.com/files/wkfvawl/mouse-click.js"></script>
<canvas width="1777" height="841" style="position: fixed; left: 0px; top: 0px; z-index: 2147483647; pointer-events: none;"></canvas>
<script type="text/javascript">
/* 鼠标特效 */
var a_idx = 0;
jQuery(document).ready(function($) {
$("body").click(function(e) {
var a = new Array("❤富强❤","❤民主❤","❤文明❤","❤和谐❤","❤自由❤","❤平等❤","❤公正❤","❤法治❤","❤爱国❤","❤敬业❤","❤诚信❤","❤友善❤","❤欢迎关注我微信公众号“秦川以北”我是秦萧冷❤");
var $i = $("<span></span>").text(a[a_idx]);
a_idx = (a_idx + 1) % a.length;
var x = e.pageX,
y = e.pageY;
$i.css({
"z-index": 999999999999999999999999999999999999999999999999999999999999999999999,
"top": y - 20,
"left": x,
"position": "absolute",
"font-weight": "bold",
"color": "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")"
});
$("body").append($i);
$i.animate({
"top": y - 180,
"opacity": 0
},
1500,
function() {
$i.remove();
});
});
});
</script>
文章来源:秦川以北 微信公众号
文章编辑:标梵互动
标签:标梵,num1,r2,js,r1,toString,num2,Math,加减乘除 来源: https://blog.csdn.net/weixin_42317619/article/details/110824442