Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何计算数字是否为立方体_C#_Math_Integer_Double_Decimal - Fatal编程技术网

C# 如何计算数字是否为立方体

C# 如何计算数字是否为立方体,c#,math,integer,double,decimal,C#,Math,Integer,Double,Decimal,我试图计算一个数字的立方根,以检查它是否是一个完美的立方体。不幸的是.NET框架没有内置的功能。因此,为了计算一个数字的立方根,我必须使用Math.Pow函数: double cubeRoot = Math.Pow(125, (double)1 / 3); 当我尝试计算多维数据集根是否为整数时,它会输出false,但125是一个完美的多维数据集: Console.WriteLine(cubeRoot % 1 == 0); 如何克服此问题?您需要取整并检查立方根的立方体是否等于原始值 doub

我试图计算一个数字的立方根,以检查它是否是一个完美的立方体。不幸的是.NET框架没有内置的功能。因此,为了计算一个数字的立方根,我必须使用
Math.Pow
函数:

double cubeRoot = Math.Pow(125, (double)1 / 3);
当我尝试计算多维数据集根是否为整数时,它会输出
false
,但125是一个完美的多维数据集:

Console.WriteLine(cubeRoot % 1 == 0);

如何克服此问题?

您需要取整并检查立方根的立方体是否等于原始值

double input = 125;
double cubeRoot = Math.Pow(input, 1.0/3.0);
double c = Math.Round(cubeRoot);
Console.WriteLine(c*c*c == input);
请注意,
Math.Pow(input,1.0/3.0)
不是计算立方根的最精确的方法,因为
1.0/3.0
不能精确地用二进制(和十进制)表示。但由于我们将结果四舍五入为int,因此输出不会受到影响


添加了.NET Core 2.1,可用于获得双精度的正确结果,但我不确定它是否比
Math.Pow()解决方案快
谢谢您的回答。威廉的回答确实不正确,因为我在寻找其他立方体。