The*_*iac 10 c floating-point floating-point-conversion
问题在于:游戏总计可以由任意数量的人玩.它从总共100开始,每个玩家轮流在-20到20之间产生整数位移.获胜者是其调整使得总数等于5的玩家.仅使用给出的三个变量:总调整计数器这是我到目前为止所拥有的:
#include <stdio.h>
int main (void)
{
int counter=0;
float adj;
int ttl=100;
printf("You all know the rules now lets begin!!!\n\n\nWe start with 100. What is\n");
while (ttl!=5)
{
printf("YOUR ADJUSTMENT?");
scanf("%f",&adj);
counter++;
if (adj<=20 && adj>=-20)
{
ttl=ttl+adj;
printf("The total is %d\n",ttl);
}
else
{
printf ("I'm sorry. Do you not know the rules?\n");
}
}
printf("The game is won in %d steps!",counter);
}
Run Code Online (Sandbox Code Playgroud)
我需要的是:当输入十进制数时,它会转到其他位置.如何确定浮点数是否具有小数部分.
Fil*_*efp 17
您可以将其转换float为a int,然后将其与原始变量进行比较.如果它们是相同的,则没有小数部分.
通过使用此方法,不需要临时变量或函数调用.
float adj;
....
if (adj == (int)adj)
printf ("no fractional!\n");
else
printf ("fractional!\n");
Run Code Online (Sandbox Code Playgroud)
说明
由于int无法处理分数,您的值float将被截断为int(例如(float)14.3将被截断为(int)14).
当比较14到14.3很明显,他们是不一样的价值,并为此"分数!" 将被打印.
Nee*_*eta 13
#include <stdio.h>
#include <math.h>
int main ()
{
float param, fractpart, intpart;
param = 3.14159265;
fractpart = modff (param , &intpart);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
http://www.cplusplus.com/reference/clibrary/cmath/modf/
modff找到小数部分,所以我想测试它是否等于0或null将回答你的问题.