c - 外部函数中的浮点数、双精度数据类型混淆 (C)
问题描述
下面的代码编译正常:
#include <stdio.h>
double add(double summand1, double summand2)
{
double sum;
sum = summand1+summand2;
return sum;
}
double subtract(double minuend, double subtrahend)
{
double diff;
diff = minuend-subtrahend;
return diff;
}
int main()
{
double a,b,c,d;
printf("Enter Operand 1:\n");
scanf("%d",&a);
printf("Enter Operand 2:\n");
scanf("%d",&b);
// Add
c = add(a,b);
// Subtract
d = subtract(a,b);
printf("Sum: %.3f\n", c);
printf("Difference: %.3f\n", d);
return 0;
}
但是,当输入时5
,5
结果是0.000
(错误的)和0.000
(预期的)。输入十进制数(例如2.5
)时,会完全跳过第二个提示,并为sum
和打印两个随机数difference
。问题一定出在数据类型 double 和 float 上,我似乎使用不正确。
解决方案
在您中,您使用了用于整数scanf()
的格式说明符。%d
当您将整个变量声明为双精度时,请改用%lf
(floating point) 。我尝试了代码并使用正确的说明符,代码有效。
推荐阅读
- python-datetime - 将数据框的列转换为时间戳
- google-apps-script - Google GroupsApp 中的 .getMembers() 和 .getGroups() 列出了意外结果
- laravel - Laraven Cron 表达式
- javascript - 通过 addEventListener 添加的事件监听器被多次调用
- java - 无法使用 SLF4J + Log4J 记录调试记录器
- python - 比较同一数据框中的两列
- c# - GeckoWebbrowser 在 vb.net 中单击类名
- python - 如何在xml文件中使用python插入值
- python - 使用 MNIST 数据集 Pytorch 训练 SqueezeNet 模型
- javascript - 通过键聚合对象数组