Java 如何计算a^(1/n)?
我试图计算Java 如何计算a^(1/n)?,java,floating-point,division,exponentiation,Java,Floating Point,Division,Exponentiation,我试图计算a^(1/n),其中^表示指数运算 但是,以下方面: Math.pow(8, 1/3) 返回1.0,而不是返回2.0 为什么会这样?问题是1/3使用,结果为零。将代码更改为 Math.pow(8, 1./3); (将1.转换为浮点文字。)尝试Math.pow(8,(1.0f/3.0f)) 1/3将进行整数除法,这将使8^0=11/3变为0(因为1和3被视为int文字) 所以你应该让这些文字浮起/加倍 做: Math.pow(8,1f/3) 或 Math.pow(8,1./3) 或
a^(1/n)
,其中^
表示指数运算
但是,以下方面:
Math.pow(8, 1/3)
返回1.0
,而不是返回2.0
为什么会这样?问题是
1/3
使用,结果为零。将代码更改为
Math.pow(8, 1./3);
(将1.
转换为浮点文字。)尝试Math.pow(8,(1.0f/3.0f))
1/3
将进行整数除法,这将使8^0=1
1/3
变为0
(因为1
和3
被视为int
文字)
所以你应该让这些文字浮起/加倍
做:
Math.pow(8,1f/3)
或
Math.pow(8,1./3)
或
Math.pow(8,1.0/3)
Aww。可爱的。:)虽然这个问题可以用一个更好的描述,但我并不真正理解所有的反对票。这对于这里的大多数人来说可能是微不足道的,但是这种事情(需要浮点除法时使用整数除法)是一个非常常见的问题,尤其是在新开发人员中;这个问题肯定会对其他人有所帮助。@Saggio-是的,这是初学者的一个主要障碍,甚至我们中的一些“专家”也会时不时地与之发生冲突(并且在这个问题上花费的时间比我们在解决问题之前愿意承认的要多)。这当然是一个骗局,但不是一个坏问题。对于初学者来说很难找到答案。如果1/3不仅仅是一个例子,而是你特别使用的东西,那么你就应该考虑<代码>数学。CBRT 而不是<代码>数学。POW。这对等级新手来说是直观可见的!HotLicks:如果是这样的话,这个问题就不存在了。@LightnessRacesinOrbit-什么问题?@HotLicks:这个问题占据了您当前在internet web浏览器设备中访问的页面。通过编写1.0f/3.0f
您故意选择了数学值1/3的单精度近似值,而不是使用1.0/3.0
可以获得的双精度近似值。我没有Java编译器,但在无法测试它的情况下,我敢打赌差异是显而易见的。非常感谢。这对我来说似乎微不足道,但却很重要。@GltknBtn:不客气。每个人都会在某个时候遇到这种情况。当除法是更复杂表达式的一部分时,情况就更不明显了,这里就是这样。