java里pow什么意思 java Math类中的pow方法
其实java里pow什么意思的问题并不复杂,但是又很多的朋友都不太了解java Math类中的pow方法,因此呢,今天小编就来为大家分享java里pow什么意思的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
java中"a="+a "b="+b是什么意思
这两个表达式是简单的字符串的连接,一般是做控制台输出打印的时候为了方便看到输出做的,比如下面代码:
publicstaticvoidmain(String[]args)
{
inta=10;
intb=0;
a=++b;
b=a+1;
//这时我对a、b两个int类型的变量做了运算,我想在控制台输出a和b看看计算结果,
//一般会这么做
System.out.println("a="+a);
System.out.println("b="+b);
//当然你也可以这样做
System.out.println("a="+a+";b="+b);
}
上面的程序会在控制台输出:
a=1
b=2
a=1;b=2
这样就可以一目了然的看到a和b的计算结果了。
java Math类中的pow方法
Math.pow(64,1/3)等价于 Math.pow(64,0)所以结果是1.0
在程序中 1/3并不代表三分之一,因为这里是两个int类型在做除法,结果也是int类型,会自动取整(向下取0了),所以是0,就可以说明为什么结果是1。执行代码如下
System.out.println(1/3)
运行结果
当然如果使用Math.pow(64,1.0/3.0)结果也不是4,代码如下
System.out.println(Math.pow(64,1.0/3.0))
结果如下
这里1.0/3.0近似等于0.3333333333所以,最后结果为上图所示。
拓展知识
1.0做除数抛运行时异常;两整数商会做取整运算,Float或Double与一个整数做除法运算,则商位Float或者Double类型
2.0可以做除数,得到的是一个分正负的无穷大;当两个数的绝对值均为0.0时候,商等于NaN。当0.0/x,x不等0.0时候
Java ME中的Math.pow()方法使用详解
使用 Java开发移动设备应用程序时可能需要用到特定 Java VM所没有的数学方法本文将专门解决 Java ME没有幂方法 Math pow()的问题我们将演示使用三种不同的方法开发同一个 ME应用程序并从中选出最佳的编程解决方案
要讨论此问题我们先考察整数和分数幂参数将我们的分析限于正实数我们将演示求整数问题和小数问题的解集相对而言比较容易(而不考虑指数的符号)在大多数情况下我们将使用示例问题 n=/其中我们会求出 n的良好估计或实际解如果初始指数事先不可用则此问题的其他解(包括牛顿法和割线法)不易编程虽然二分法是可行的解决方案但我们将关注传统上不为人所探究的三个方法第一个是简单的(不过有时效率低下)几何衰变算法而第二个方法将利用 Math sqrt()方法并保证在不超过次迭代中收敛到一个近似解第三个方法将使用泰勒级数逼近法求对数并对泰勒级数进行欧拉转换
产生整数解的 ME Math pow()方法
传统上 Java Math pow()方法包含两个参数这两个参数包括底数和指数我们假定(最初)这两个参数均为整数然后求出 ME中与 Java方法使用相同参数的 Math pow()方法的可编程解此处可编程解相当简单如示例所示在本例中我们仅运行以指数值为指标的倍乘循环
示例
intpow(intx inty)/*wedefinethepowermethodwith basexandpowery(i e x^y)*/{ intz=x; for(inti=;i<y;i++)z*=x; return}
当然有人可能会发现需要求出非整数幂的值正实数的简单解(无需访问 Math pow()方法)可能涉及使用 Math log()例如请考虑/的情况利用/*ln()=中自然对数的结果要得到最终解需要利用指数(特别指出 e=)在这种情况下可能不需要使用幂函数遗憾的是 Java ME也不支持 Math log()方法没有 Math pow()或 Math log()方法时我们会考虑使用朴素的强力试探性方法应用 Math sqrt()方法以及自然对数(和欧拉 e)的泰勒级数逼近来求得 Java ME问题的解
使用几何衰变算法作为强力解的 ME Math pow()
Java ME的早期实现包括浮点主数据类型 float和 double最近已添加了这些类型现在我们将 Math pow()声明中的整型参数替换为 double数据类型
可能需要在 Java ME Math pow()幂方法中使用小数指数我们提供的生成 Math pow()的第一种方法是使用几何衰变算法的朴素的强力试探性方法简单而言衰变算法以一个大于已知解的值开始然后应用某个方法来衰变该值直到该值非常逼近该解(有关简单线性衰变算法的演示请参见示例)在我们的例子中将进一步演示向上述解收敛的几何形式
示例
/*Thisexampleillustratesasimplisticdecayalgorithmthatwewillassume convergestoourdesiredsolution(apositiveinteger)*/intn;//assumethatnisthesolutiontothenumberwearetryingtofind intvarX=;//assumethatweknowthesolutionislessthanorequalto while(varX>){ varX=;//decrementby if(varX==n)returnvarX;}
在示例中我们从开始递减直到找到预期的数字假定预期数字是一个正整数这种类型的算法构成了强力试探性方法的基础
使用类似的方法我们可在遇到小数时应用此算法假定我们需要求出 n的值其中 n=/要使用衰变算法我们必须首先找到一个合适的起点该点要等于或大于解本身这对于带有正指数的正实数很容易做到对于我们的示例要对此解进行编程对方法两边求立方得到 n=当然此方程与 n=等效之后我们的起始值将变为我们知道 n必须小于(因为 n=)注意如果限于正实数则此推导方法同样适用于任何正指数值现在我们可能需要设计一个循环来产生 n的充分接近预期数字的解我们再来看示例它适合于所有正底数和正指数
示例
doublepow(doublex doubley)//wedefineournewpowermethodforfractions{ intden=;//specifyarbitrarydenominator intnum=(int)(y*den);//findnumerator ints=(num/den)+;/*************************************************************************Variable s providesthepowerforwhichwemultiplythebasetofind**ourstartingsearchvalue Forexample ifweseekasolutionfor**n= ^(/) thenwewilluse ^ or asourstartingvalue(whichis**generatedinournextsectionofcode)Why?Thesolutionforour**problem(giventhatthebaseispositive)willalwaysbelessthanor**equaltothebasetimesthenumeratorpower************************************************************************//*************************************************************************Becausewesetthedenominatortoanarbitraryhighvalue**wemustattempttoreducethefraction Intheexamplebelow**wefindthehighestallowablefractionthatwecanusewithout**exceedingthelimitationofourprimitivedatatypes************************************************************************/doublez=Double MAX_VALUE; while(z>=Double MAX_VALUE){ den=;//decrementdenominator num=(int)(y*den);//findnumerator s=(num/den)+;//adjuststartingvalue//findvalueofourbasenumbertothepowerofnumerator z=x; for(inti=;i<num;i++)z*=x;}/*************************************************************************Nowwearegoingtoimplementthedecayalgorithmtofind**thevalueof n************************************************************************//*************************************************************************Wenowfind n tothepowerof s Wewillthendecrement n**findingthevalueof n tothepowerofthedenominator This**value variable a willbeparedto z Ifthe a isnearly**equalto z thenwewillreturn n ourdesiredresult************************************************************************/doublen=x;//Wedefine n asourreturnvalue(estimate)for x//find n tothepowerof s for(inti=;i<s;i++)n*=x;//Begindecayloop while(n>){ doublea=n;//proxyforn//find a thevalueof n tothepowerofdenominator for(inti=;i<den;i++)a*=n;//pare a to z Isthevaluewithinthehundred thousandth?//ifso return n doublecheck=a z; doublecheck=z a; if(check<||check>)returnn; n*=;//Wearbitrarilyuseadecayof%periteration}//valuecouldnotbefound return return;}
本示例演示了衰变算法的使用方法您会注意到 n的值(解的估计值)将按%强制递减您可能需要根据编程精度要求来改变此值也可能考虑包括编程逻辑该逻辑用于将前一迭代解与当前迭代进行比较然后如果有改善继续进行迭代但是如果解已回归则返回前一个值
这里讲述的解只处理正指数如果值为负会出现什么情况呢?下面我们将解决这种意外情况
处理负指数
要再增加一层复杂度假定正在向 Math pow()方法传递负指数在这种情况下指数为负一种简单的解决方案是将底数转换为小数使指数为正例如可转换为(/)我们以可编程的方式用底数 x来除用来乘 y(参见示例)
示例
if(y<){ x=(/x);//convertbasenumbertofraction y*=;//makeexponentpositive}
lishixinzhi/Article/program/Java/hx/201311/26818关于java里pow什么意思的内容到此结束,希望对大家有所帮助。