java Math类中的pow方法 10

不知怎么...我用这方法有点问题...比如显示Math.pow(64,1/3)是1而不是4...求大神告诉我改如何解决啊!!!... 不知怎么...我用 这方法有点问题...比如显示 Math.pow(64,1/3)是1而不是4...求大神告诉我改如何解决啊!!! 展开
 我来答
skystmm
2018-09-10 · TA获得超过1075个赞
知道答主
回答量:60
采纳率:73%
帮助的人:10.2万
展开全部

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时候

嘿不是我的错
2013-07-19
知道答主
回答量:7
采纳率:0%
帮助的人:1万
展开全部
1/3计算机默认值是0,两个参数的值都应该是double 型
返回第一个参数的第二个参数次幂的值。特殊情况如下:
如果第二个参数为正 0 或负 0,那么结果为 1.0。
如果第二个参数为 1.0,那么结果与第一个参数相同。
如果第二个参数为 NaN,那么结果为 NaN。
如果第一个参数为 NaN,第二个参数非 0,那么结果为 NaN。
如果
第一个参数的绝对值大于 1,并且第二个参数为正无穷大,或者
第一个参数的绝对值小于 1,并且第二个参数为负无穷大,
那么结果为正无穷大。
如果
第一个参数的绝对值大于 1,并且第二个参数为负无穷大,或者
第一个参数的绝对值小于 1,并且第二个参数为正无穷大,
那么结果为正 0。
如果第一个参数的绝对值等于1,并且第二个参数为无穷大,那么结果为 NaN。
如果
第一个参数为正 0,并且第二个参数大于 0,或者
第一个参数为正无穷大,并且第二个参数小于 0,
那么结果为正 0。
如果
第一个参数为正 0,并且第二个参数小于 0,或者
第一个参数为正无穷大,并且第二个参数大于 0,
那么结果为正无穷大。
如果
如果第一个参数为负 0,并且第二个参数大于 0 但不是有限的奇数整数,或者
第一个参数为负无穷大,并且第二个参数小于 0 但不是有限的奇数整数,
那么结果为正 0。
如果
第一个参数为负 0,并且第二个参数为正的有限奇数整数,或者
第一个参数为负无穷大,并且第二个参数为负的有限奇数整数,
那么结果为负 0。
如果
如果第一个参数为负 0,并且第二个参数小于 0 但不是有限的奇数整数,或者
第一个参数为负无穷大,并且第二个参数大于 0 但不是有限的奇数整数,
那么结果为正无穷大。
如果
第一个参数为负 0,并且第二个参数为负的有限奇数整数,或者
第一个参数为负无穷大,并且第二个参数为正的有限奇数整数,
那么结果为负无穷大。
如果第一个参数为小于 0 的有限值,
如果第二个参数为有限的偶数整数,那么结果等于第一个参数绝对值的第二个参数次幂的结果。
如果第二个参数为有限的奇数整数,那么结果等于负的第一个参数绝对值的第二个参数次幂的结果。
如果第二个参数为有限的非整数值,那么结果为 NaN。
如果两个参数都为整数,并且结果恰好可以表示为一个 double 值,那么该结果恰好等于第一个参数的第二个参数次幂的算术结果。
(在前面的描述中,当且仅当浮点数为有限值并且是方法 ceil 的定点数,或者是方法 floor 的定点数时,才可以认为浮点值是整数。当且仅当将某个单参数方法应用到某个值的结果等于该值时,该值才是这个方法的定点值。)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
林淑玲551
2013-07-19
知道答主
回答量:1
采纳率:0%
帮助的人:1479
展开全部
我们知道static double pow(double a, double b) 返回第一个参数的第二个参数次幂的值。可是这里的1/3计算机在计算时输出的结果为0,所以 Math.pow(64,1/3)就会等于1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e337bc877
2013-07-19 · TA获得超过172个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:169万
展开全部
Math.pow(64,1/3)代码的意思是64的3分之一平方,1/3的结果=0,如果要取小数改成1.0/3.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迷糊百味
2013-07-19 · TA获得超过108个赞
知道答主
回答量:76
采纳率:0%
帮助的人:58.8万
展开全部
问题出在1/3,因为1和3都是int类型,在java中直接运算1/3相当于运算(int)1/3=0,所以你的Math.pow(64,1/3)相当于Math.pow(64,0),64的0次方,其结果就只能为1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式