I have this weird problem. When I write a double type number, it gets stored in the
double data;
variable. Then when I compile and run the code the number gets printed out as for example 3697.0000
when I have written 3697.47595
.
Here is the code:
#include <stdio.h>
const int n = 12;
int stack[n], top = -1;
double Read()
{
int x = 0;
if(top < 0)
printf("Empty stack!");
else
{
x = stack[top];
top--;
}
return x;
}
void Write(int x)
{
if(top == n-1)
printf("The stack is full");
else
{
top++;
stack[top] = x;
}
}
int main()
{
double data;
printf("Enter a double (0 for quit): ");
scanf("%lf", &data);
while(data > 0)
{
Write(data);
printf("Enter a double (0 for quit): ");
scanf("%lf", &data);
}
printf("---------------------------");
printf("\nThe stack contains:\n");
while(top >= 0 )
printf("%lf ", Read());
return 0;
}
The value is truncated to int
because the elements of the array stack
, the argument of Write
, and the variable x
to temporarily store the value in Read
are int
. Use double
for them to deal with double
value.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.