在这里,我们将给大家分享关于javascript精确的数学计算的知识,让您更了解javascript数值计算的本质,同时也会涉及到如何更有效地Android-精确的数学计算、javascript–使用
在这里,我们将给大家分享关于javascript精确的数学计算的知识,让您更了解javascript 数值计算的本质,同时也会涉及到如何更有效地Android-精确的数学计算、javascript – 使用通配符选择类而不是精确的类名、javascript – 像素精确的文本对齐方式、javascript – 减少不删除正确的数组项的内容。
本文目录一览:- javascript精确的数学计算(javascript 数值计算)
- Android-精确的数学计算
- javascript – 使用通配符选择类而不是精确的类名
- javascript – 像素精确的文本对齐方式
- javascript – 减少不删除正确的数组项
javascript精确的数学计算(javascript 数值计算)
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){}
try{t2=arg2.toString().split(".")[1].length}catch(e){}
with(Math){
r1=Number(arg1.toString().replace(".",""))
r2=Number(arg2.toString().replace(".",""))
return (r1/r2)*pow(10,t2-t1);
}
}
//给Number类型增加一个div方法,调用起来更加方便。
Number.prototype.div = function (arg){
return accDiv(this, arg);
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function accMul(arg1,arg2)
{
var m=0,s1=arg1.toString(),s2=arg2.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)
}
//给Number类型增加一个mul方法,调用起来更加方便。
Number.prototype.mul = function (arg){
return accMul(arg, this);
}
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}
//给Number类型增加一个add方法,调用起来更加方便。
Number.prototype.add = function (arg){
return accAdd(arg,this);
}
//减法函数,用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSubtr(arg1,arg2)
//返回值:arg1减去arg2的精确结果
function accSubtr(arg1,arg2){
var r1,r2,m,n;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
//动态控制精度长度
n=(r1>=r2)?r1:r2;
return ((arg1*m-arg2*m)/m).toFixed(n);
}
//给Number类型增加一个subtr 方法,调用起来更加方便。
Number.prototype.subtr = function (arg){
return accSubtr(arg,this);
}
Android-精确的数学计算
我遇到了一个问题,我正在开发一个应该能够进行一些数学计算的应用程序。这些计算必须是准确的(或者显然不是错误的)
但是这个简单的代码
double a = 3.048d;
double b = 1000d;
double c = a / b;
给我一个错误的结果c不是预期的0.003048而是0.0030480000000000004这显然是错误的。
double d = 3.048 / 1000;
第二个代码片段给出了正确的结果。
我知道在使用计算机进行计算时,并不是所有的浮点运算都是精确的,但是我不知道如何解决这个问题。
提前致谢!
路德维希
开发以下产品:
-Android 2.2
测试设备:
-HTC Desire
javascript – 使用通配符选择类而不是精确的类名
有没有办法选择所有以group1开头的类(所以我最终选择group1-1,group1-2,group1-3),类似$(“.group1”*)
解决方法
$("[class^='group1-']").click(function () { var groupNumber = $(this).attr('class').split('-')[1]; alert('Yep,you clicked group1-' + groupNumber); });
示例:http://jsfiddle.net/iwasrobbed/7bjtb/
javascript – 像素精确的文本对齐方式
我正在使用JavaScript来填充左对齐文本的范围,直到它填充其容器,或者直到它达到高度或宽度的可变阈值.此过程导致字体大小变化很大.
我的问题是,对于某些字符,左边有少量填充…虽然通常不明显,但是字体非常大,可以达到10像素或更多.
我掀起了一个页面来展示对各种角色的影响:
http://jsfiddle.net/kBu7S/
文本范围存在于一个设计中,其中沿着页面向下的每个其他元素都按像素对齐到左边缘,因此它在视觉上会因较大的文本大小而分散注意力.
谁能想到一种计算填充量的方法,这样我就能碰到跨度的相对位置?或者甚至可能有CSS解决方案? (字母间距和字间距没有影响.)
我承认即使是一个肮脏的解决方案似乎也不太可能……感谢您的考虑.
您最好的选择是对字体进行实验,并测量每个字符的实际填充,然后构建一个表格,将字符映射到其填充.然后你可以调整角色的位置.这是很多工作,但我不知道你还能做些什么.
javascript – 减少不删除正确的数组项
将代码缩短为
removeContentNew(i) { var contents = this.state.templateContent; contents.splice(i,1); this.setState({ templateContent: contents }); }
它可能与此有关:
componentDidMount() { this.setState({ templateContent: this.props.template.content }); }
仍然在屏幕上删除错误的一个.当我记录状态时,它确实给了我正确的数组.也许地图有问题?
–
我试图修复这段代码,但我似乎无法找到错误.
removeContent(i) { var $formgroup = false; const regex = new RegExp('^content.','i'),contents = _.reduce(_.keys(this.refs),(memo,k) => { if (regex.test(k) && k !== 'content.' + i) { var $formgroup = $(this.refs[k]); if (this.props.customer.getSetting('wysiwyg_enabled',true)) { var html = CKEDITOR.instances['html_' + i].getData(); } else { var html = $formgroup.find('[name="html"]').val(); } memo.push({ subject: $formgroup.find('[name="subject"]').val(),html: html,text: $formgroup.find('[name="text"]').val(),language: $formgroup.find('[name="language"]').val() }); } return memo; },[]); this.setState({ templateContent: contents }); }
我是要从数组templateContents中删除的项的ID.每当我按下其中一个项目的删除按钮时,它似乎总是删除最后一个项目并忽略其他项目.
我一直在用k变量做一些测试,而且可能是问题的原因,但我一点也不确定.
我对RegExp做事方式真的很陌生.
我有什么想法可以解决这个问题吗?
解决方法
constructor(pops) { super(props); this.state = { templateContent: this.props.template.content } }
对setState的调用也是异步的,因此在执行更改时您没有任何安全性
关于javascript精确的数学计算和javascript 数值计算的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android-精确的数学计算、javascript – 使用通配符选择类而不是精确的类名、javascript – 像素精确的文本对齐方式、javascript – 减少不删除正确的数组项等相关内容,可以在本站寻找。
本文标签: