2013-08-07 96 views
26

我知道如何使用sqrt函數獲得一個數的平方根如何獲取C++中的立方體根?

我怎樣才能獲得立方根的一個數字?

+8

您是指立方體根,而不是「具有根3的平方根」。 –

+7

你可以使用pow(),功率爲1/3 – Kotte

+0

http://stackoverflow.com/questions/7463486/cube-root-of-a-number – acraig5075

回答

48

sqrt代表「平方根」,「平方根」代表提升到1/2的力量。沒有「根2的平方根」或「根3的平方根」這樣的東西。對於other roots,您更改第一個單詞; 在你的情況下,你正在尋找如何執行立方體生根

C++ 11之前,對此沒有特定的功能,但你可以回到第一個原則:

  • 平方根:std::pow(n, 1/2.)(或std::sqrt(n)
  • 立方根:std::pow(n, 1/3.)(或std::cbrt(n)因爲C++ 11)
  • 四根:std::pow(n, 1/4.)

如果你希望通過負值爲n,避免std::pow解決方案— it doesn't support negative inputs with fractional exponents,這就是爲什麼std::cbrt加入:

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

注:那.是非常重要的,否則1/3使用整數除法並在0結果。

+0

我的意思是Sqrt不是正方形,例如sqrt(4)= 2; –

+3

@HavaDarabi:我不明白。 'sqrt'代表「平方根」,無論你喜歡與否,以及'sqrt(4)'_is_'2'。 –

+2

+1注意。是至關重要的。 – xis

0

x的第n個根等於x ^(1/n),所以使用std::pow。但是我不明白這對操作符重載有什麼影響。

+0

我想重載sqrt操作符!我該怎麼做? –

+2

@Hava:'sqrt'不是一個「運算符」,你不能「重載」它來用相同的參數執行不同的事情。你的術語都是錯的。 –

+1

@HavaDarabi不,你沒有 – OrangeDog

8
在C++ 11 std::cbrt

被介紹爲數學庫的一部分,你可能refer

0
  1. sqrt()不是運營商。
  2. 您不能重載sqrt()

請解釋爲什麼你需要重載`sqrt()`,以便我們可以幫助你做你想做的。

0

我會勸阻任何上述方法,因爲他們不爲我工作。我做pow(64,1/3)和pow(64,1/3)。)但我得到的答案是3
這是我的邏輯。

ans = pow(n, 1/3.); 
if (pow(ans, 3) != n){ 
    ans++; 
} 
0

其實這一輪必須爲上述解決方案工作。

正確的解決方案將是

ANS =圓形(POW(N,1./3)。);