求教这个求解一元三次方程为啥返回结果是0?

weixin_38027556 2018-09-17 03:29:27
刚开始学C#,小白求教这个求解一元三次方程为啥返回结果是0?
double k = 102893;
double nn = 9.993313 * System.Math.Pow(10, 13);
double t0 = 31879;
double xx=0;
for (zl = t0; zl < 2 * t0; zl+=0.1)
if (System.Math.Abs(zl * zl * zl + zl * zl * k - nn) < 1)
{
xx = zl;
break;
}
else
{ zl++; }
Console.WriteLine("Tensile is" +xx+ " N" );
...全文
206 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2018-09-17
  • 打赏
  • 举报
回复
网上搜的“一元三次方程在线计算器”,计算了一下,结果有三个:
27666.28598554642
-90761.8180396379
-39797.46794590854

楼主给的是31879~31879*2,肯定没结果了。
而且,楼主代码中,循环增加0.1,用已知的结果精度到小数点后一位来计算,误差都是上亿的。所以,不可能会小于1。
BXS_null 2018-09-17
  • 打赏
  • 举报
回复
nn是固定的 为 99933130000000 zl * zl * zl + zl * zl * k 最小值为:136964826828852 怎么算都不小于1
EdsionWang 2018-09-17
  • 打赏
  • 举报
回复
不知道你在学习编程还是在学数学。学编程,你要学会打断点,看看循环的每一步你定义的变量值都怎么变化的。
  • 打赏
  • 举报
回复
数字太大,不是很想算
  • 打赏
  • 举报
回复
只有一种解释,就是zl * zl * zl + zl * zl * k - nn算的绝对值一直没有小于1

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧