2017-02-09 8 views
0

Math.pow(i、j)の私の経験とJavaのドキュメントによると、負の数でjが整数でないときはいつでも、Math.powは常にNaNを返します。私が試したさまざまな計算機では、非整数の指数に負の基数を与える実際の解がある状況があります。例えばJavaの非整数指数の累乗に負の基数を計算する方法はありますか?

:NaNの

を返し

System.out.println(Math.pow(-3, 0.6)); 
はこれに任意の回避策はありますか?

ありがとうございます。

+0

にあり、あなたはどのような研究を行っていますか?良い回避策がある場合は、インターネット上のどこかに記述することを期待しています。 –

+0

また、どのような結果が期待できますか? (私は手がかりを持っていますが、自分で明示することをお勧めします) –

+0

私はあなたの意図を正確に推測していれば、最初のステップは0.6を分数、ここでは3/5に変換することです。 「Javaを分数化するための倍精度化」(http://stackoverflow.com/questions/14014158/double-to-fraction-in-java)を参照してください。 –

答えて

0

どのようにそのパワーを定義しますか?標準的な方法は、極性分解を見つけることです。複雑なベースの対数とは

pow(-3, 0.6) = exp(0.6 * (log(3) + i*pi)) 
= pow(3,0.6) * (cos(0.6*pi) + i*sin(0.6*pi)) 

今すぐあなたもそれが -1=exp(-i*pi)=exp(i*3*pi)=exp(-5*i*pi)=exp(i*7*pi)=…ことも事実であるとして、 Ln(-3)を表すために対数の他の枝を選んだ可能性があり、それに電源を接続します。これらの亜種のうちの1つだけが力に本当の結果を与えるでしょう。しかし、その変種を正確に知りたいということをコンピュータがどのように知っていますか? pow(-3,0.61)の場合はどうしますか?

0

iが負の数であるとjが非整数である時はいつでもMath.pow(i,j)で、私自身の経験におよびJavaのドキュメントによると、Math.powはいつも私が持っているさまざまな電卓のすべてによると、しかし、NaNを返しますがしようとすると、非整数の指数に負の基数を当てはめる本当の解決策がある状況がいくつかあります。例えば

System.out.println(Math.pow(-3, 0.6));

戻りNaN

ない任意の回避策は、この気の毒

関連する問題