【问题标题】:printing doubles from a function outside of main从 main 之外的函数打印双打
【发布时间】:2019-05-01 23:49:01
【问题描述】:

我是 c 新手,尝试使用主函数之外的函数,我想测试我得到的结果,但在打印函数的值时发现错误。

#include <stdio.h>
#include <math.h>

/*function prototype f*/
int f(double x);

/*main*/
int main(void){

   double x = 0.1;

   printf("the value is %.3f\n", f(x)); 
   printf("the value is %.3f", sqrt(1.0-(x*x))); 

   return 0;
}

int f(double x){
    double value;
    value = sqrt(1.0-(x*x));}
    return value;
}

这个基本代码从给定的 x 中找到一个值,我想稍后在循环中使用它。但是当我运行它时,我得到以下输出

值为-1.....
值为 0.995

(... 是一个随机序列 字符)

我不确定函数 f 和主函数内部计算的实际值有什么区别,以及为什么会出现这个问题

【问题讨论】:

  • 您正在将函数结果转换为 int - 更改函数声明/定义,使其返回 double 而不是 int。
  • 计算说明:sqrt((1.0-x)*(1.0+x)) 将提供更准确的答案,尤其是当x 接近 1.0 时。要查看,请使用 1.0 和 "%e" 附近的值。
  • tribo32,您使用的编译器没有警告printf("the value is %.3f\n", f(x));

标签: c printf double function-prototypes


【解决方案1】:

您的原型使用的是 int 而不是 double。这应该会给你正确的答案。

#include <stdio.h>
#include <math.h>
#include <conio.h>

/*function prototype f*/
double f(double x);

/*main*/
int main() {

    double x = 0.1;

    printf("the value is %.3f\n", f(x));
    printf("the value is %.3f", sqrt(1.0 - (x*x)));

    _getch();
    return 0;
}

double f(double x) {
    double value;
    value = sqrt(1.0 - (x*x));
    return value;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2019-11-14
    • 2018-05-04
    相关资源
    最近更新 更多