www.91084.com

GVKun编程网logo

javascript精确的数学计算(javascript 数值计算)

21

在这里,我们将给大家分享关于javascript精确的数学计算的知识,让您更了解javascript数值计算的本质,同时也会涉及到如何更有效地Android-精确的数学计算、javascript–使用

在这里,我们将给大家分享关于javascript精确的数学计算的知识,让您更了解javascript 数值计算的本质,同时也会涉及到如何更有效地Android-精确的数学计算、javascript – 使用通配符选择类而不是精确的类名、javascript – 像素精确的文本对齐方式、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-精确的数学计算

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 – 使用通配符选择类而不是精确的类名

javascript – 使用通配符选择类而不是精确的类名

我有几个类要选择.group1-1 .group1-2 .group1-3,其中每个都有50个元素.

有没有办法选择所有以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 – 像素精确的文本对齐方式

我正在使用JavaScript来填充左对齐文本的范围,直到它填充其容器,或者直到它达到高度或宽度的可变阈值.此过程导致字体大小变化很大.

我的问题是,对于某些字符,左边有少量填充…虽然通常不明显,但是字体非常大,可以达到10像素或更多.

我掀起了一个页面来展示对各种角色的影响:
http://jsfiddle.net/kBu7S/

文本范围存在于一个设计中,其中沿着页面向下的每个其他元素都按像素对齐到左边缘,因此它在视觉上会因较大的文本大小而分散注意力.

谁能想到一种计算填充量的方法,这样我就能碰到跨度的相对位置?或者甚至可能有CSS解决方案? (字母间距和字间距没有影响.)

我承认即使是一个肮脏的解决方案似乎也不太可能……感谢您的考虑.

最佳答案
填充通常被称为该类型的“肩部”,并且它是字体设计的固有特征.没有简单的方法来反击它,因为它是出于光学原因,给出了正确间距的类型.毕竟,如果你键入IIIIIII,你需要在首都之间留出一些间距,而这只是来自这个填充.其他角色,如WWWWWW,不需要任何角色.

您最好的选择是对字体进行实验,并测量每个字符的实际填充,然后构建一个表格,将字符映射到其填充.然后你可以调整角色的位置.这是很多工作,但我不知道你还能做些什么.

javascript – 减少不删除正确的数组项

javascript – 减少不删除正确的数组项

编辑1

将代码缩短为

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做事方式真的很陌生.

我有什么想法可以解决这个问题吗?

解决方法

在构造函数中更新您的状态,而不是在componentDidMount方法中.

constructor(pops) {
  super(props);
  this.state = {
    templateContent: this.props.template.content
  }
}

对setState的调用也是异步的,因此在执行更改时您没有任何安全性

关于javascript精确的数学计算javascript 数值计算的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android-精确的数学计算、javascript – 使用通配符选择类而不是精确的类名、javascript – 像素精确的文本对齐方式、javascript – 减少不删除正确的数组项等相关内容,可以在本站寻找。

本文标签: