33

関数を使用して数値の平方根を取得する方法を知っていsqrtます。

数値の立方根を取得するにはどうすればよいですか?

4

9 に答える 9

62

sqrtは「平方根」の略で、「平方根」は のべき乗を意味し1/2ます。「ルート 2 の平方根」や「ルート 3 の平方根」などというものはありません。他の語根については、最初の単語を変更します。あなたの場合、キューブルート化を実行する方法を探しています。

C++11 より前では、これに対する特定の機能はありませんが、最初の原則に戻ることができます。

  • 平方根: std::pow(n, 1/2.)(またはstd::sqrt(n))
  • キューブルート: std::pow(n, 1/3.)(またはstd::cbrt(n)C++11 以降)
  • 4 番目のルート:std::pow(n, 1/4.)

に負の値を渡すことを期待している場合は、解決策nを避けてくださいstd::pow分数の指数を持つ負の入力をサポートしていないためstd::cbrtが追加されました。

std::cout << std::pow(-8, 1/3.) << '\n';  // Output: -nan
std::cout << std::cbrt(-8)      << '\n';  // Output: -2

NBそれ以外の場合は整数除算を使用し、結果が になる.ため、これは非常に重要です。1/30

于 2013-08-07T12:49:06.020 に答える
8

C++11 では、数学ライブラリstd::cbrtの一部として導入されました

于 2013-08-07T12:49:33.983 に答える
2
include <cmath>
std::pow(n, 1./3.)

また、C++11 ではcbrt同じヘッダーにあります。

ダミーのための数学

于 2013-08-07T12:48:57.193 に答える
0

x の n 乗根は x^(1/n) に等しいので、 を使用しますstd::pow。しかし、これが演算子のオーバーロードとどう関係しているのかわかりません。

于 2013-08-07T12:48:57.163 に答える
0
  1. sqrt()演算子ではありません。
  2. をオーバーロードすることはできませんsqrt()

sqrt()あなたが望むことをするのを手伝うことができるように、なぜオーバーロードする必要があるのか​​ を説明してください.

于 2013-08-07T12:57:39.087 に答える
-1

この問題の解決策は、

cube_root = pow(n,(float)1/3);

#include <math.h>ファイルをライブラリ化する必要があります

C/C++ の古い標準は cbrt() 関数をサポートしていません。

cube_root = pow(n,1/3);コンパイラが考えるようなコードを書く場合(C/C++ の除算問題)、正しい答えを得るためには、1/3 = 0を使用して型キャストを行う必要があります。(float)1/3

#include<iostream.h>
#include<conio.h>
#include<math.h>
using namespace std;

int main(){
float n = 64 , cube_root ;
clrscr();
cube_root = pow(n , (float)1/3);
cout<<"cube root = "<<cube_root<<endl;
getch();
return 0;
}

立方根 = 4

于 2019-07-31T06:27:31.407 に答える