gpt4 book ai didi

c - double 和浮点格式显示不同的结果

转载 作者:行者123 更新时间:2023-12-02 12:15:56 26 4
gpt4 key购买 nike

我认为 double 和 float 之间的区别在于小数的精度。然而,我使用 double 和 float 得到了奇怪的结果,而且它们彼此相差甚远。

第一段代码使用浮点格式产生正确的结果:

#include <stdio.h>

#define ABSOLUTE_VALUE(number) ( ((number) < 0) ? -(number) : (number) )

int main (void)
{
float number, absNumber;


printf ("What number do you want to check the absolute value for? : ");
scanf ("%f", &number);

absNumber = ABSOLUTE_VALUE(number);

printf ("The absolute value of %.2f is %.2f\n", number, absNumber);

return 0;
}

输出:
您想检查哪个数字的绝对值? :-3
-3.00的绝对值为3.00

第二段代码使用 double 格式产生错误的结果:

#include <stdio.h>

#define ABSOLUTE_VALUE(number) ( ((number) < 0) ? -(number) : (number) )

int main (void)
{
double number, absNumber;


printf ("What number do you want to check the absolute value for? : ");
scanf ("%d", &number);

absNumber = ABSOLUTE_VALUE(number);

printf ("The absolute value of %.2d is %.2d\n", number, absNumber);

return 0;
}

输出:
您想检查哪个数字的绝对值? :-3
-03的绝对值为2147344384

最佳答案

在第二个示例中,%d 用于整数。 (d 不是 double 的缩写,而是 decimal 的缩写)

scanf  ("%d", &number);

应该是

scanf  ("%lf", &number);

printf 也不正确,因为 %f 用于 double

printf ("The absolute value of %.2d is %.2d\n", number, absNumber);

相反,这应该是:

printf ("The absolute value of %.2f is %.2f\n", number, absNumber);
<小时/>

请注意,double 的格式说明符对于 scanfprintf 是不同的,this C FAQ article有一些很好的解释。

关于c - double 和浮点格式显示不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18140331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com