鱼C论坛

 找回密码
 立即注册
查看: 2708|回复: 3

求助,关于double与float在解一元二次方程中的问题

[复制链接]
发表于 2011-8-20 20:15:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <math.h>
void main()
{
float a, b, c, disc, p, q;
scanf_s( "%f,%f,%f", &a, &b, &c );
if( fabs(a) <= 1e-10 )
  printf( "no root" );
else
{
  disc = b * b - 4 * a * c;
  p = - b / ( 2 * a );
  if( fabs(disc) <= 1e-10 )
  {
   printf( "two equal root: %8.4f\n ", p );
  }
  else if( disc > 1e-10 )
  {
   q = sqrt(disc) / ( 2 * a );
   printf( "x1 = %8.4f, x2 = %8.4f", p + q, p - q );
  }
  else
  {
   q = sqrt(-disc) / ( 2 * a );
   printf( "x1 = %8.4f + %8.4fi, x2 = %8.4f - %8.4fi\n", p, q, p, q );
  }
}
}
这是我写的代码,是正确的,但是如果我把变量变成double,如下
double a, b, c, disc, p, q;
却得不到正确结果,我后来在测试时在末尾加了句
printf( "%8.4f\n", disc );
得到的结果非常大
请问为什么会出现这种情况?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-20 23:36:16 | 显示全部楼层
老大没来.占个位置...................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-21 16:17:39 | 显示全部楼层
这哥们不厚道,占了位置又不帮我:'(
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-10 02:02:43 | 显示全部楼层
scanf 读入double时,需用%lf或是%g
来源:互联网找找 scanf double format
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 19:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表