c - 如何在输出计数平方根上获得更多小数位

标签 c

如果我做错了什么请原谅我,我是第一次来这里,我的英语不是最好的。另外,我是 C 的初学者

我们有一个用 C 语言编写的学校项目,我们必须在其中编写计算平方根的函数。我们不能使用 math.h。我已经让它工作了,但是我不知道如何解决输出问题。

我得到这个:“my_sqrt = ?.??????.10e?”例如:“1.414214.10e1”

但我需要得到这个:“my_sqrt = ?.??????.10e???”例如:“1.4142145678.10e+01” 我该怎么做?

这是代码:

double fabs(double x) {     //just abs()
    if (x < 0)
        x = -x;
    return x;
}

double my_sqrt(double x) {   //sqrt function
    double y = 1;
    while(fabs(y*y - x) >= 0.00000000001)
        y = ((x/y) + y) / 2;
    k++;
    return y;
}

int main(int argc, char *argv[]) {
    int num;

    sscanf(argv[2], "%d", &num);    // char to int

    if (strcmp(argv[1], "--help") == 0)    // this will just print help
        getHelp();
    if (strcmp(argv[1], "--sqrt") == 0)    // this is for sqrt
        printf("my_sqrt = %f.10e%d", my_sqrt(num), k);

    return 0;
}

非常感谢!

最佳答案

我相信您打算使用 %.10f(打印带有 10 位小数的 double )而不是 %f.10(打印带有标准小数位数的 double 在格式字符串中放置后跟字符串 .10) 的位置。有关详细信息,请参阅 http://en.cppreference.com/w/c/io/fprintf .

您的代码的另一个问题是此调用:

printf("my_sqrt = %f.10e%d", my_sqrt(num), k);

这里您希望首先对 my_sqrt(num) 求值,以便它可以设置 k。但是函数调用的参数的评估顺序是未指定的。程序可能首先获取 k 的值(零),然后才评估 sqrt 调用。

关于c - 如何在输出计数平方根上获得更多小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20146298/

相关文章:

c - 在 Cypress FX3 中初始化 gdb 调试器时出现以下错误

c - 如何打印 2D 战舰游戏

c++ - Typedef 一个已经定义的函数

c - 原始套接字发送和接收

C中反转后无法打印字符串

c - C 中的指针数组

协调多个进程之间共享监听套接字的接受

c++ - 为什么 python 中的普通循环运行起来比 C++ 中的循环慢得多?以及如何优化它?

c - Windows 和 *nix 编译检测

c - 关于 C 语言规范的文档