news 2026/6/20 7:04:37

%d输出float类型,%f输出int类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
%d输出float类型,%f输出int类型

几个要注意的点:
1.并不会隐式类型转换,只是以%d的存储形式(低32位),%f(double类型的存储形式)输出
2.浮点数输出时都是以double类型的存储形式输出的,虽然在内存上以float类型存储形式存储的
3.float,double类型的存储形式遵循IEEE754标准,详情请查看IEEE754标准:double,float类型在内存中具体是怎么存的
4.像int->float,float->int等基本数据类型转换,会进行比特位的转换
5.int*->double*(所指向的空间并不进行比特位的转换),重新解释指针为:以int为一个模块操作指针->以double为一个模块操作指针

// 输出格式与类型不一致,输出结果实际上与存储有关 // 1.int以%f格式输出,结果一般为0.000000 // 2.long long 类型的很大的数,用printf(“%f”)打印出来可能为一个小数; // 3.double、float以%d格式输出(输出时,float会转化为double存储形式;%d取低32位) // (1)结果一般为绝对值很大的数(当浮点数不能精确表示时,低32位不为0) // (2)结果为0,如:xx.0、或xx.5、或xx.25等(当浮点数能精确表示时,低32位为0) #include <stdio.h> int main() { // int以%f格式输出,结果一般为0.000000 // float以%d格式输出 // 结果一般为绝对值很大的数 // 结果为0,若浮点数为xx.0、或xx.5、或xx.25等 printf("%f\n", 1); // 结果:0.000000 printf("%f\n", 0xffffffff); // 结果:0.000000 printf("%f\n", 0x3ff3ae147ae147a3); // 结果:1.230000 printf("%d\n", 2.34); // 结果:-343597384 printf("%d\n", 5.78); // 结果:1374389535 printf("%d\n", 1.0); // 结果:0.000000 printf("%d\n", 2.0); // 结果:0.000000 printf("%d\n", 2.5); // 结果:0.000000 printf("%d\n", 103.25); // 结果:0.000000 printf("----------------------------------------------------------------------------\n"); // 若想输出转换后的类型,必须强制类型转换(会容易让人混淆,因为感觉上会隐式类型转换,但实际上 // 没有"=",不会自动转换) printf("%f,%d\n", (double)1, (int)1.0); // 结果:1.000000,1 printf("----------------------------------------------------------------------------\n"); // int*->double*,只是指针类型的转换(所指向的空间并不进行比特位的转换)。 int c = 1; int *p_int = &c; double *p_double = NULL; p_double = (double*)p_int; printf("llx:0x%llx\n", *p_double); // 查看double指向的内存空间有什么数据,我这里内存中存了:0x1b00000001 printf("%f,%d\n", *p_double, *p_double); // 结果:0.000000,1 // 实际上int的存储结构没变,将double指向的内存空间的数据(0x1b00000001)以%f格式输出 // 应该这么转 double c2 = (double)c; // 转成了了double类型的存储形式(进行了比特位的转换) double *p_double2 = &c2; printf("llx:0x%llx\n", c); // 内存中存了(比特位):0x1 printf("llx:0x%llx\n", *p_double2); // 内存中存了(比特位):0x3ff0000000000000 printf("%f,%d\n", *p_double2, *p_double2); // 结果:1.000000,0 printf("----------------------------------------------------------------------------\n"); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 5:24:07

利用Miniconda管理多个PyTorch项目环境,避免依赖冲突

利用 Miniconda 管理多个 PyTorch 项目环境&#xff0c;避免依赖冲突 在深度学习项目开发中&#xff0c;一个看似不起眼却频繁“暴雷”的问题是什么&#xff1f;不是模型调参失败&#xff0c;也不是 GPU 显存不足&#xff0c;而是——“为什么你的代码能跑&#xff0c;我的就不…

作者头像 李华
网站建设 2026/6/13 1:21:07

一文搞懂大模型微调

前言 你是不是也有过这样的困惑&#xff1a;明明调用GPT、Llama这些大模型的API能解决通用问题&#xff0c;但一到自己的业务场景——比如让模型识别行业专属术语、生成符合公司风格的文案、处理特定格式的数据分析——效果就大打折扣&#xff1f;要么回答偏离需求&#xff0c;…

作者头像 李华
网站建设 2026/6/12 12:33:24

从Anaconda下载到PyTorch GPU运行:一站式操作手册

从Anaconda下载到PyTorch GPU运行&#xff1a;一站式操作手册 在深度学习项目中&#xff0c;最让人头疼的往往不是模型设计或调参&#xff0c;而是环境配置——明明代码没问题&#xff0c;却因为 torch.cuda.is_available() 返回 False 而卡住&#xff1b;或者换了台机器&…

作者头像 李华
网站建设 2026/6/9 18:47:40

清华镜像源配置教程:大幅提升Miniconda和pip安装速度

清华镜像源配置&#xff1a;加速 Miniconda 与 pip 安装的实战指南 在人工智能项目开发中&#xff0c;你是否经历过这样的场景&#xff1f;——深夜赶实验&#xff0c;运行 conda install pytorch 后盯着终端进度条一动不动&#xff0c;半小时过去只下载了 30%&#xff0c;最终…

作者头像 李华
网站建设 2026/6/10 17:22:48

从Anaconda到Miniconda:为何轻量级Python环境更适合AI研发

从Anaconda到Miniconda&#xff1a;为何轻量级Python环境更适合AI研发 在人工智能项目日益复杂的今天&#xff0c;你是否遇到过这样的场景&#xff1f;一个同事说“我的代码跑得好好的”&#xff0c;而你在本地却因为依赖版本不兼容、CUDA 驱动错配或某个包缺失而卡住数小时。更…

作者头像 李华
网站建设 2026/6/16 19:54:12

GitHub项目如何复现?Miniconda-Python3.10帮你锁定依赖版本

GitHub项目如何复现&#xff1f;Miniconda-Python3.10帮你锁定依赖版本 在人工智能和数据科学领域&#xff0c;你有没有遇到过这样的场景&#xff1a;从GitHub上克隆了一个热门开源项目&#xff0c;照着README一步步执行安装命令&#xff0c;结果却卡在某个包的版本冲突上&…

作者头像 李华