C-将一个整数与值0平方就是输出1?
我的作业只允许使用stdio.h和math.h库 我的任务很简单——找到圆柱体的表面积和体积,输出的精度应该是1,除非输出的小数点是0,在这种情况下,小数点不应该被打印出来 上面是我对表面积提出的相同的东西,只是不同的变量。如果第一行的输出是-1,那么第二行应该使其为正,0应该保持为零整数,所以不需要担心那些古怪的东西C-将一个整数与值0平方就是输出1?,c,zero,pow,C,Zero,Pow,我的作业只允许使用stdio.h和math.h库 我的任务很简单——找到圆柱体的表面积和体积,输出的精度应该是1,除非输出的小数点是0,在这种情况下,小数点不应该被打印出来 上面是我对表面积提出的相同的东西,只是不同的变量。如果第一行的输出是-1,那么第二行应该使其为正,0应该保持为零整数,所以不需要担心那些古怪的东西 出于某种原因,当第一行输出0时,第二行输出1。这里有我遗漏的东西吗?您的问题是,如果小数点为0,则要抑制小数点,这里有一种方法 decPlace_volume = floor(v
出于某种原因,当第一行输出0时,第二行输出1。这里有我遗漏的东西吗?您的问题是,如果小数点为0,则要抑制小数点,这里有一种方法
decPlace_volume = floor(volume+.05) - ceil(volume); //should output -1, 0, or 1
decPlace_volume = pow(decPlace_volume,2); //should the above == -1, this should turn it into 1 while making 0 remain 0
除非输出小数点为0,否则输出精度应为1,在这种情况下,不应打印小数点
由于浮点的典型二进制实现,OP的方法在接近0.01的倍数时会遇到问题。相反,post处理未更改卷的输出
使用snprintf
好了,伙计们,谢谢你们的帮助,我知道了。出于某种原因,我认为我的第一行可以输出1,但它不会。而不是 decPlace_体积=功率decPlace_体积,2 为了转换,我只为deplace_volume*=-1;做了一行
再次感谢 您如何知道第一行输出的是0?另外,在什么情况下第一行可以输出1?请您发布第一个值为0时您如何知道输出为1,以及您如何知道第一个值为0?deplace_volume与print语句的精度修饰符相关联,即printft volume为%.*f,德克斯库,体积,体积`首先,DECU卷的类型是什么?第二,在什么情况下,音量是负的,这是你得到a-1的唯一方法。第三,您如何确定任一点的deplace_体积值?您是否将其打印到终端,并在调试器中查看它,什么?
#include<stdio.h>
#include<string.h>
int main()
{
char buffer[25];
double volume;
volume = 1.234;
sprintf (buffer, "%.1f", volume); // convert to string with 1 place
if (strstr(buffer, ".0") != NULL) // examine string
sprintf (buffer, "%.0f", volume); // redo the string with 0 places
printf ("Volume = %s\n", buffer);
volume = 1.01;
sprintf (buffer, "%.1f", volume);
if (strstr(buffer, ".0") != NULL)
sprintf (buffer, "%.0f", volume);
printf ("Volume = %s\n", buffer);
return 0;
}
Volume = 1.2
Volume = 1
double volume = foo();
char buffer[100];
buffer[0] = 0;
int len = snprintf(buffer, sizeof buffer, "%.1f", volume);
if (len > 0 && buffer[len-1] == '0') buffer[--len] = '\0';
puts(buffer);