#include<stdio.h>
int main(){
double n1,n2;
float n3;
printf("input 2 flt:");
scanf("%lf %lf",&n1,&n2);
n3 = n1 * n2;
printf("n1 * n2 = %.2lf",n3);
}
当我设置n1,n2为浮点数时,n3无法正确计算,为什么?
最初来自a online tutorial的代码,经过修改以测试%lf的功能。
答案 0 :(得分:2)
因为您需要使用正确的scanf()
说明符。
如果您使用float
,则"%f"
和"%lf"
使用double
。
对于float
,您可以这样做
#include<stdio.h>
int main()
{
float n1, n2;
float n3;
printf("input 2 flt:");
if (scanf("%f%f", &n1, &n2) == 2) {
n3 = n1 * n2;
printf("n1 * n2 = %.2f",n3);
}
}
适用于double
#include<stdio.h>
int main()
{
double n1, n2;
double n3;
printf("input 2 flt:");
if (scanf("%lf%lf", &n1, &n2) == 2) {
n3 = n1 * n2;
printf("n1 * n2 = %.2f",n3);
}
}
请注意,我在使用scanf()
和2
的值之前检查了n1
返回n2
,因为如果您不检查由于n1
和/或n2
未初始化,程序可能会调用未定义的行为。
您的printf()
说明符也是错误的,对于float
和double
,您可以使用 "%f"
,请阅读文档。
答案 1 :(得分:1)
您必须使用%f
。
#include <stdio.h>
int main(){
float n1,n2;
float n3;
printf("input 2 flt:");
scanf("%f %f",&n1,&n2);
n3 = n1 * n2;
printf("n1 * n2 = %.2f",n3);
}
答案 2 :(得分:0)