如果num在C中小数点后没有数字,则浮点为int
我应该如何打印浮点数,使其在小数点后没有数字。例如,11.00应打印为11,但11.45应保持不变。问题可能是一些if语句。有什么建议吗?以下是我的解决方案:如果num在C中小数点后没有数字,则浮点为int,c,C,我应该如何打印浮点数,使其在小数点后没有数字。例如,11.00应打印为11,但11.45应保持不变。问题可能是一些if语句。有什么建议吗?以下是我的解决方案: #include <stdio.h> void printDouble(double fp); int main(void) { printDouble(11.0); printDouble(11.45); } void printDouble(double fp) { double _fp;
#include <stdio.h>
void printDouble(double fp);
int main(void)
{
printDouble(11.0);
printDouble(11.45);
}
void printDouble(double fp)
{
double _fp;
char buffer[40];
int i = 0;
do{
sprintf(buffer, "%.*lf", i, fp);
sscanf(buffer, "%lf", &_fp);
i++;
} while(fp != _fp);
puts(buffer);
}
也许这有点低效,但它确实有效。无论如何,你不需要经常打印浮点数。我想到的第一个解决方案是cast。 这就是我要做的。 假设您的变量是“a”,您希望打印它
float a;
if (if (a-(int)a<0.001 || (int)a-a<0.001) ) //1st comment explains this
printf("%d", (int)a);
else
printf("%f", a);
float a;
if(if(a-(int)a您尝试了什么?您希望打印多少个小数位。假设您有1.124
或七分之一0.14285714285714285714
?printf(“%g\n”,var)
其中var
是变量的名称。顺便说一句,如果这是关于货币的,那么您不应该将钱存储在浮动中。可能的%e副本不会显示浮动的整数表示形式,它使用科学的表示法。因此,当fp=100000.0时,%g将显示1.0e+5,而不是100000,这是OP要求的。if
语句中出现的问题意味着问题应该用手来解决,而不是通过函数来解决。@DaveKnight Answer modifiedIf a是123.000001,这是行不通的。总是比较一些最小值,所以:if(a-(int)谢谢你的建议,Paul。我完全忘记了这一点。
float a;
if (if (a-(int)a<0.001 || (int)a-a<0.001) ) //1st comment explains this
printf("%d", (int)a);
else
printf("%f", a);