首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在输出计数平方根上获得更多的小数位

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

Stack Overflow用户
提问于 2013-11-22 13:40:34
回答 3查看 131关注 0票数 1

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

我们在C中有一个学校项目,在那里我们必须编写计算平方根的函数。我们不能用数学。我已经开始工作了,但是产出有问题,我不知道如何解决。

我得到了这样的信息:"my_sqrt =?例如:"1.414214.10e1“

但我需要得到这样的信息:"my_sqrt =?“前男友:"1.4142145678.10e+01”我该怎么做?

这是代码:

代码语言:javascript
运行
复制
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;
}

非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-22 13:49:52

我相信您的意思是在您的格式字符串中使用%.10f (打印带有10位小数位的双位)而不是%f.10 (打印带有标准小数位数的双小数位,然后是字符串.10)。有关更多细节,请参阅http://en.cppreference.com/w/c/io/fprintf

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

代码语言:javascript
运行
复制
printf("my_sqrt = %f.10e%d", my_sqrt(num), k);

在这里,您希望首先对my_sqrt(num)进行评估,以便它能够设置k。但是,函数调用的参数的求值顺序未指定。程序可能首先得到k (0)的值,然后计算sqrt调用。

票数 0
EN

Stack Overflow用户

发布于 2013-11-22 13:56:22

首先,我想补充一点,我们应该鼓励新来的人。来回答你问的问题..。使用%e表示科学格式的浮点数

票数 0
EN

Stack Overflow用户

发布于 2013-11-22 14:57:24

使用"%.*e"获取.之后的小数位数和指数表示法。

代码语言:javascript
运行
复制
// printf("my_sqrt = %f.10e%d", my_sqrt(num), k);
// 10 digits after the decimal point
int Digs = 10;
printf("my_sqrt = %.*e %d\n", Digs, my_sqrt(num), k);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20146298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档