I am trying to write a program which first gets a number from the user, then rounds the number to an integer, then to its 10s place, 100s place and finally its 1,000s place. Here's what I’ve got so far:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float getNumber();
float roundToInteger(float);
float roundToTenths(float);
float roundToHundredths(float);
float roundToThousandths(float);
int main(){
float number;
float to_integer;
float to_tenths;
float to_hundredths;
float to_thousandths;
number = getNumber();
while(number != -1){
to_integer = roundToInteger(number);
to_tenths = roundToTenths(number);
to_hundredths = roundToHundredths(number);
to_thousandths = roundToThousandths(number);
printf("\tnumber rounded to integer: %f\n", to_integer);
printf("\tnumber rounded to tenths: %f\n", to_tenths);
printf("\tnumber rounded to hundreths: %f\n", to_hundredths);
printf("\tnumber rounded to thousandths: %f\n\n", to_thousandths);
number = getNumber();
}
return 0;
}
float getNumber(){
float number;
printf("enter a number (-1 to end): ");
scanf("%f", &number);
return number;
}
float roundToInteger(float number){
return floor(number + .5);
}
float roundToTenths(float number){
return floor(number * 10 + .5) / 10;
}
float roundToHundredths(float number){
return floor(number * 100 + .5) / 10;
}
float roundToThousandths(float number){
return floor(number * 1000 + .5) / 10;
}
After compiling, I get the following for output:
enter a number (-1 to end): 123.456789
number rounded to integer: 123.000000
number rounded to tenths: 123.500000
number rounded to hundreths: 1234.599976
number rounded to thousandths: 12345.700195
enter a number (-1 to end):
Thank you in advance.