c++表示一个很大的浮点数_浮点数在计算机中表示

本文介绍了浮点数在计算机中的表示方式,特别是重点讲解了IEEE 754标准,包括浮点数的二进制表示、规范化值、非规范化值和特殊值。通过实例解析了浮点数的计算过程,帮助读者理解浮点数的精度和表示范围。
摘要由CSDN通过智能技术生成

前言

相信大家在编程过程中都有使用过浮点数,但是浮点数总是给我带来预期不一样的结果,下面展示了在 C 语言中的精度问题,发现使用浮点数总是会带来精度缺失。在学习和工作当中总能听到不能使用浮点数来表示金钱,会有精度缺失。

#include 

int main() {
float a = 0.1 + 0.2;
printf("a = %.20f\n", a); // 0.30000001192092895508
return 0;
}

但是在一些特殊领域,单靠整数是无法满足精度要求,这个时候就需要用到浮点数。这边篇文章来解释浮点数在计算机中是如何表示。

二进制小数

我们先类比一下比较熟悉的十进制数,比如 3.25 可以表示为:

3 * 10^0 + 2 * 10^-1 + 5 * 10^-2 = 3.25

如果我们只用 1 字节二进制来表示,一共 8 位,前 4 位表示整数,后 4 位表示小数,可以表示为0011 0100

1 * 2^1 + 1 * 2^0 + 0 * 2^-1 + 1 * 2^-2 = 3.25

这种定点表示不能很有效的表示很大的数,我们一般在计算机中表示小数也不是使用这种方式,而是使用 IEEE 浮点表示方法。

IEEE 浮点数表示

IEEE 二进制浮点数算术标准(IEEE 754)是20世纪80运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式包括负零(-0)与反常值(denormal number),一些特殊数值,比如无穷(Inf)与非数值(NaN),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值