鱼C论坛

 找回密码
 立即注册
查看: 2026|回复: 27

整型转double有问题

[复制链接]
发表于 2023-9-23 16:29:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 huansdg 于 2023-9-23 16:57 编辑

int main(){
  printf("%lf",4);
}
运行为0.000000
我想问的是:整型不能在printf语句里面自动转化为double,一定要先(double)4,在%lf输出吗?c语言不是有自动转化吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-23 16:29:10 | 显示全部楼层
这是因为在printf函数中使用了%lf格式化符号,它会将参数作为double类型来处理。在这个例子中,4是一个整型,当它被传递给printf函数时,它会被自动转换为double类型。然而,由于没有指定小数位数,printf函数会默认将小数部分输出为0,因此输出结果为0.000000。

要解决这个问题,可以将4显式地转换为double类型,以便printf函数可以正确地处理它。例如,可以使用以下代码:

int main(){
  printf("%lf",(double)4);
}

这将输出4.000000。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 16:29:16 | 显示全部楼层
您在代码中使用了 %lf 格式字符串来打印一个整数值。然而,%lf 是用于打印 double 类型的浮点数的格式符,而不是整数。

要正确打印整数,您可以使用 %d 格式符:
int main() {
    printf("%d", 4);
    return 0;
}

这将会输出整数 4。如果您想将整数转换为 double 类型并打印,可以使用 %f 格式符:
int main() {
    double num = 4;
    printf("%f", num);
    return 0;
}

这将输出浮点数 4.000000

请注意,由于浮点数和整数具有不同的内部表示方式,因此在转换时需要小心处理精度和数据类型的兼容性。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 16:31:20 | 显示全部楼层
int main() {
    double num = 4;
    printf("%lf", num);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 16:37:57 | 显示全部楼层
isdkz 发表于 2023-9-23 16:29
这是因为在printf函数中使用了%lf格式化符号,它会将参数作为double类型来处理。在这个例子中,4是一个整型 ...

如果我指定小数位了,但还是没有整数4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 16:38:10 | 显示全部楼层
???你include呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 16:39:58 | 显示全部楼层
陶远航 发表于 2023-9-23 16:29
您在代码中使用了 %lf 格式字符串来打印一个整数值。然而,%lf 是用于打印 double 类型的浮点数的格式符, ...

我知道用%d,我想知道整型转double型为什么不是4.000000而是0.000000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 16:41:01 | 显示全部楼层

我写了,没截图截到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 16:41:27 | 显示全部楼层
huansdg 发表于 2023-9-23 16:41
我写了,没截图截到

你截个全图呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 16:42:51 | 显示全部楼层

#include <stdio.h>
main(){
  printf("%lf",4);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 16:47:20 | 显示全部楼层
huansdg 发表于 2023-9-23 16:42
#include
main(){
  printf("%lf",4);

你int呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 16:49:27 | 显示全部楼层

实数4还要int吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-9-23 17:01:21 | 显示全部楼层
huansdg 发表于 2023-9-23 16:49
实数4还要int吗?

???int main
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 17:02:38 | 显示全部楼层

可以呀 也可以void main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 17:03:13 | 显示全部楼层
huansdg 发表于 2023-9-23 17:02
可以呀 也可以void main()

???你用的什么编译器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 17:05:14 | 显示全部楼层
陈尚涵 发表于 2023-9-23 17:03
???你用的什么编译器

code blocks
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 17:05:41 | 显示全部楼层

这个不自带编译器,你装的什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-23 17:07:21 | 显示全部楼层
陈尚涵 发表于 2023-9-23 17:05
这个不自带编译器,你装的什么?

GNU GCC Compiler
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 17:09:52 | 显示全部楼层

emm我说版本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-23 17:10:26 | 显示全部楼层

我C98没这问题,你下个dev试试?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表