当前位置: 首页 > news >正文

C++中float与double的区别和联系

在 C++ 中,floatdouble 都是用来表示浮点数(带小数点的实数)的数据类型,但它们在精度、占用空间、性能等方面有区别。

下面是详细比较:


1. 存储空间与精度

类型典型字节数有效数字位数(十进制)二进制位数(IEEE 754)
float4 字节67 位1位符号 + 8位指数 + 23位尾数
double8 字节1516 位1位符号 + 11位指数 + 52位尾数

说明

  • 有效数字位数指的是能保证的精准十进制数字位数。
  • 在现代 CPU(遵循 IEEE 754 标准)上,float 通常是 单精度浮点数double双精度浮点数

2. 数值范围

  • float:约 ±3.4 × 10³⁸
  • double:约 ±1.7 × 10³⁰⁸

double 可以表示更大更小的数,并且中间的精度更高。


3. 性能

  • 早期硬件 上,float 运算可能比 double 快,因为占用内存更少、数据搬运更快。
  • 现代 CPU 中,double 运算性能通常与 float 相差无几(甚至有些处理器对 double 优化得更好)。
  • GPU 编程(如 CUDA)中,float 可能更快且占用更少显存,因此大量数据时更优。

4. 默认类型

  • 在 C++ 中,写 3.14 这样的浮点字面量,默认是 double 类型。
  • 如果要指定为 float,需加 fF 后缀:3.14f
  • 长双精度是 long double,精度≥double(但实现依平台而异)。

5. 使用建议

  • 优先用 double:更高精度,数值稳定性好,减少累积误差。
  • float:在对精度要求不高、且数据量特别大或存储受限时(例如 3D 图形、深度学习中的神经网络权重)。

代码示例

#include <iostream>
#include <iomanip>
using namespace std;int main() {float f = 1.0f / 3.0f;double d = 1.0 / 3.0;cout << setprecision(10) << f << endl;  // 输出约 0.33333334cout << setprecision(20) << d << endl; // 输出约 0.33333333333333331483
}

结果对比

  • float 精度损失明显(第 7 位后就可能出错)。
  • double 能保持更多的正确有效位。

总结
float = 单精度(小,精度低)
double = 双精度(大,精度高,常用)

http://www.xdnf.cn/news/1388431.html

相关文章:

  • 基于STM32设计的智能宠物喂养系统(华为云IOT)_273
  • 迅为RK3588开发板安卓串口RS485App开发-硬件连接
  • 智慧工地源码
  • 如何将iPhone日历传输到电脑
  • Webrtc支持FFMPEG硬解码之Intel
  • 【React】登录(一)
  • 2025 年 8 月《DeepSeek-V3.1 SQL 能力评测报告》发布
  • OpenCV 图像预处理核心技术:阈值处理与滤波去噪
  • 强化学习的“GPT-3 时刻”即将到来
  • 【C语言16天强化训练】从基础入门到进阶:Day 15
  • centos8部署miniconda、nodejs
  • 音频转音频
  • vue3新特性
  • 【Tools】C#文件自动生成UML图
  • Java流程控制03——顺序结构(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
  • “设计深圳”亚洲权威消费科技与室内设计盛会
  • Nginx高级配置 | Nginx变量使用
  • RoadMP3告别车载音乐烦恼,一键get兼容音频
  • 20250828在荣品RD-RK3588-MID开发板的Android13系统下适配Bainianxing的GPS模块BU-16M10
  • STM32项目分享:基于单片机的自行车测速系统设计
  • C++ DDS框架学习
  • 【前端教程】用 JavaScript 实现4个常用时间与颜色交互功能
  • mysql安全运维之常见攻击类型与防御指南-从SQL注入到权限提升
  • iOS 文件管理与 uni-app 性能优化实战 多工具协作的完整指南
  • 知识卡片html5动态网页源码
  • 2025-08-28-zabbix5.0创建监控项通过脚本简单实现监控oracle11g的磁盘组和表空间的使用量
  • 【从零开始搭建你的 AI 编程助手知识库】
  • Docker的常用命令及简单使用
  • 微积分 | 积分代换
  • 探索永洪vividime的超链接功能:数据分析的桥梁