如何读取实数输入并使用它们
How to read an input of Real Numbers and use them
你好,我在编码方面经验很少,但我在学校解决的问题要求我有一个输入,例如“ 12.5 ”,并处理该输入以给我一定的输出。
我正在尝试修改这段代码来做到这一点,但没有成功
代码在C
例如,“rate”类似于“12.5”,但它只读取“” 12" 然后它继续计算 12,并忽略 .5
我需要它来阅读全文12.5
感谢您提供的任何帮助。
#include <stdio.h>
int main ()
{
int hours_2weeks;
int rate;
int Gross_Pay;
int Social_security_tax;
int Federal_tax;
int State_tax;
int Medical_dental;
int Net_Pay;
printf("\nPayroll Program for X Y Z Corp.\n");
{
printf("Enter hours worked: ");
scanf("%d", &hours_2weeks);
printf("Enter hourly rate: ");
scanf("%d", &rate);
}
printf("This employee worked %d hours with a salary of $%d per hour. Here is the salary statement for this employee:\n",hours_2weeks,rate);
Gross_Pay=hours_2weeks*rate;
printf("Gross Pay: %d\n", Gross_Pay);
Social_security_tax=hours_2weeks*rate*.06;
printf("Social security tax: -%d\n", Social_security_tax);
Federal_tax=hours_2weeks*rate*.1;
printf("Federal tax: -%d\n", Federal_tax);
State_tax=hours_2weeks*rate*.05;
printf("State tax: -%d\n", State_tax);
Medical_dental=hours_2weeks*rate*.05;
printf("Medical/dental: -%d\n", Medical_dental);
Net_Pay=hours_2weeks*rate-(hours_2weeks*rate*.06)-(hours_2weeks*rate*.1)-(hours_2weeks*rate*.05)-(hours_2weeks*rate*.05);
printf("Net Pay: %d\n", Net_Pay);
}
rate
是整型变量。将其更改为 float
,并将 scanf
调用更改为
scanf("%f", &rate);
当您需要小数点时,您必须将数据类型更改为 float
或 double
,当您这样做时,您必须将格式说明符更改为 %f
float
和 %lf
用于 double
。
您将所有输入变量定义为整数。即使您键入双精度值,系统也会 covert/cast 将这些值转换为整数...
您正在这样做:
int hours_2weeks;
printf("Enter hours worked: ");
scanf("%d", &hours_2weeks);
改为:
double hours_2weeks;
printf("Enter hours worked: ");
scanf("%lf", &hours_2weeks);
您已将速率声明为:int rate;
,它的作用是,速率变量现在只能存储整数值(如 1,4,66,3333,尽管它有上限)而不是浮点数(如 3.55、4.2112、34.533,带小数的数字)。
为了能够存储浮点值(带小数点的数字),您需要将速率延迟为:float rate;
。
此外,为了能够将浮点值打印到控制台输出,您需要将 printf 和 scanf 的格式说明符从 %d
替换为 %f
谢谢,现在它完成了我需要它做的事情。
#include <stdio.h>
int main()
{
float hours_2weeks;
float rate;
float Gross_Pay;
float Social_security_tax;
float Federal_tax;
float State_tax;
float Medical_dental;
float Net_Pay;
//printf("\nPayroll Program for X Y Z Corp.\n");
{
printf("Enter hours worked: ");
scanf("%f", &hours_2weeks);
printf("Enter hourly rate: ");
scanf("%f", &rate);
}
printf("This employee worked %d hours with a salary of $%d per hour. Here is the salary statement for this employee:\n",hours_2weeks,rate);
Gross_Pay=hours_2weeks*rate;
printf("Gross Pay: %.2f\n", Gross_Pay);
Social_security_tax=hours_2weeks*rate*.06;
printf("Social security tax: -%.2f\n", Social_security_tax);
Federal_tax=hours_2weeks*rate*.1;
printf("Federal tax: -%.2f\n", Federal_tax);
State_tax=hours_2weeks*rate*.05;
printf("State tax: -%.2f\n", State_tax);
Medical_dental=hours_2weeks*rate*.05;
printf("Medical/dental: -%.2f\n", Medical_dental);
Net_Pay=hours_2weeks*rate-(hours_2weeks*rate*.06)-(hours_2weeks*rate*.1)-(hours_2weeks*rate*.05)-(hours_2weeks*rate*.05);
printf("Net Pay: %.2f\n", Net_Pay);
}
你好,我在编码方面经验很少,但我在学校解决的问题要求我有一个输入,例如“ 12.5 ”,并处理该输入以给我一定的输出。
我正在尝试修改这段代码来做到这一点,但没有成功
代码在C
例如,“rate”类似于“12.5”,但它只读取“” 12" 然后它继续计算 12,并忽略 .5
我需要它来阅读全文12.5
感谢您提供的任何帮助。
#include <stdio.h>
int main ()
{
int hours_2weeks;
int rate;
int Gross_Pay;
int Social_security_tax;
int Federal_tax;
int State_tax;
int Medical_dental;
int Net_Pay;
printf("\nPayroll Program for X Y Z Corp.\n");
{
printf("Enter hours worked: ");
scanf("%d", &hours_2weeks);
printf("Enter hourly rate: ");
scanf("%d", &rate);
}
printf("This employee worked %d hours with a salary of $%d per hour. Here is the salary statement for this employee:\n",hours_2weeks,rate);
Gross_Pay=hours_2weeks*rate;
printf("Gross Pay: %d\n", Gross_Pay);
Social_security_tax=hours_2weeks*rate*.06;
printf("Social security tax: -%d\n", Social_security_tax);
Federal_tax=hours_2weeks*rate*.1;
printf("Federal tax: -%d\n", Federal_tax);
State_tax=hours_2weeks*rate*.05;
printf("State tax: -%d\n", State_tax);
Medical_dental=hours_2weeks*rate*.05;
printf("Medical/dental: -%d\n", Medical_dental);
Net_Pay=hours_2weeks*rate-(hours_2weeks*rate*.06)-(hours_2weeks*rate*.1)-(hours_2weeks*rate*.05)-(hours_2weeks*rate*.05);
printf("Net Pay: %d\n", Net_Pay);
}
rate
是整型变量。将其更改为 float
,并将 scanf
调用更改为
scanf("%f", &rate);
当您需要小数点时,您必须将数据类型更改为 float
或 double
,当您这样做时,您必须将格式说明符更改为 %f
float
和 %lf
用于 double
。
您将所有输入变量定义为整数。即使您键入双精度值,系统也会 covert/cast 将这些值转换为整数...
您正在这样做:
int hours_2weeks;
printf("Enter hours worked: ");
scanf("%d", &hours_2weeks);
改为:
double hours_2weeks;
printf("Enter hours worked: ");
scanf("%lf", &hours_2weeks);
您已将速率声明为:int rate;
,它的作用是,速率变量现在只能存储整数值(如 1,4,66,3333,尽管它有上限)而不是浮点数(如 3.55、4.2112、34.533,带小数的数字)。
为了能够存储浮点值(带小数点的数字),您需要将速率延迟为:float rate;
。
此外,为了能够将浮点值打印到控制台输出,您需要将 printf 和 scanf 的格式说明符从 %d
%f
谢谢,现在它完成了我需要它做的事情。
#include <stdio.h>
int main()
{
float hours_2weeks;
float rate;
float Gross_Pay;
float Social_security_tax;
float Federal_tax;
float State_tax;
float Medical_dental;
float Net_Pay;
//printf("\nPayroll Program for X Y Z Corp.\n");
{
printf("Enter hours worked: ");
scanf("%f", &hours_2weeks);
printf("Enter hourly rate: ");
scanf("%f", &rate);
}
printf("This employee worked %d hours with a salary of $%d per hour. Here is the salary statement for this employee:\n",hours_2weeks,rate);
Gross_Pay=hours_2weeks*rate;
printf("Gross Pay: %.2f\n", Gross_Pay);
Social_security_tax=hours_2weeks*rate*.06;
printf("Social security tax: -%.2f\n", Social_security_tax);
Federal_tax=hours_2weeks*rate*.1;
printf("Federal tax: -%.2f\n", Federal_tax);
State_tax=hours_2weeks*rate*.05;
printf("State tax: -%.2f\n", State_tax);
Medical_dental=hours_2weeks*rate*.05;
printf("Medical/dental: -%.2f\n", Medical_dental);
Net_Pay=hours_2weeks*rate-(hours_2weeks*rate*.06)-(hours_2weeks*rate*.1)-(hours_2weeks*rate*.05)-(hours_2weeks*rate*.05);
printf("Net Pay: %.2f\n", Net_Pay);
}