|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。
偶然候您会对一个类熟习到健忘了它的存在。假如您可以写出java.lang.Foo的文档,那末Eclipse将匡助您主动完成所需的函数,您无需浏览它的Javadoc。比方,我利用java.lang.Math(一个我自以为十分懂得的类)时就是如许,但令我受惊的是,我比来偶尔读到它的Javadoc——这多是我近五年来第一次读到,我发明这个类的巨细几近翻了一倍,包括20种我历来没传闻过的新办法。看来我要对它刮目相看了。
Java™言语标准第5版向java.lang.Math(和它的姊妹版java.lang.StrictMath)增加了10种新办法,Java6又增加了10种。在本文中,我重点会商个中的对照单调的数学函数,如log10和cosh。在第2部分,我将切磋专为操纵浮点数(与笼统实数相反)而计划的函数。
笼统实数(如π或0.2)与Javadouble之间的区分很分明。起首,数的幻想形态是具有没有限的精度,而Java暗示法把数限定为固定位数。在处置十分年夜和十分小的数时,这点很主要。比方,2,000,000,001(二十亿零一)能够准确暗示为一个int,而不是一个float。最靠近的浮点数暗示情势是2.0E9—即两亿。利用double数会更好,由于它们的位数更多(这是应当老是利用double数而不是float数的来由之一);但它们的精度仍旧遭到必定限定。
盘算机算法(Java语言和其他言语的算法)的第二个限定是它基于二进制而不是十进制。1/5和7/50之类的分数可用十进制准确暗示(分离是0.2和0.14),但用二进制暗示时,就会呈现反复的分数。好像1/3在用十进制暗示时,就会变成0.3333333……以10为基数,任何分母仅包括质数因子5和2的分数都能够准确暗示。以2为基数,则只要分母是2的乘方的分数才能够准确暗示:1/2、1/4、1/8、1/16等。
这类不准确性是急切必要一个math类的最次要的缘故原由之一。固然,您能够只利用尺度的+和*运算符和一个复杂的轮回来界说三角函数和其他利用泰勒级数睁开式的函数,如清单1所示:
清单1.利用泰勒级数盘算正弦- publicclassSineTaylor{publicstaticvoidmain(String[]args){for(doubleangle=0;angle<=4*Math.PI;angle+=Math.PI/8){System.out.println(degrees(angle)+" "+taylorSeriesSine(angle)+" "+Math.sin(angle));}}publicstaticdoubledegrees(doubleradians){return180*radians/Math.PI;}publicstaticdoubletaylorSeriesSine(doubleradians){doublesine=0;intsign=1;for(inti=1;i<40;i+=2){sine+=Math.pow(radians,i)*sign/factorial(i);sign*=-1;}returnsine;}privatestaticdoublefactorial(inti){doubleresult=1;for(intj=2;j<=i;j++){result*=j;}returnresult;}}
复制代码 <p>
ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。 |
|