c - 程序输出不正确
问题描述
当我进入 1 英里时,我的程序没有正确输出
#include <stdio.h>
int main(void)
{
int kilometers;
int miles;
printf("\n");
printf("Please enter the distance in miles: ");
scanf("%d", &miles);
printf("\n");
kilometers = 1.52 * miles;
printf("%d miles is equal to ", miles);
printf("%d kilometers", kilometers);
printf("\n\n");
return 0;
}
当我输入 1 英里时,它应该输出到 1.52 公里,但给了我 1 公里
解决方案
如评论中所述,您使用的是int
代替float
or double
,因此您将无法获得所需的精度。此外,英里到公里的转换也不正确;1.60934
每英里都有1
公里。
#include <stdio.h>
int main(void) {
double kilometers;
double miles;
printf("\nPlease enter the distance in miles: ");
scanf("%lf", &miles);
printf("\n");
kilometers = 1.60934 * miles;
printf("%.2lf miles is equal to ", miles);
printf("%.2lf kilometers\n\n", kilometers);
return 0;
}
推荐阅读
- python - python 中的 os.mknod() 和 open('FILENAME', 'a') 有什么区别、速度和实现?
- automation - Kubernetes作业成功后复制报告
- javascript - Google API 无故响应 403 禁止
- scala - SCALA 在 listFiles 上包含多个条件
- c# - 无法使用 ngrok 在本地测试我的 Telegram Bot
- spring - 如何使用 Spring Security 使用 ping 访问和在标头中传递的用户名对经过预身份验证的 LDAP 用户进行身份验证?
- bash - 在不使用 ARGV 的情况下将参数从 bash 传递到 perl
- c++ - 如何将 static_cast 转换为变量的类型
- asp.net-mvc - GetAuthCookie() 和更改域 cookie
- angular - Angular:订阅 Observable 时,AgGrid 不会更新行