佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1754|回复: 10

C++ 浮点的问题。

[复制链接]
发表于 26-10-2005 01:19 AM | 显示全部楼层 |阅读模式
嗨,有谁可以告诉我 Standard C++ floating point 的范围吗(最大和最小)?
据我手上所有的课本,float 值大概是 1.2e-38 ~ 3.4e38。我想知道float如何处理负数。
负数的范围又是如何呢?

谢啦!
回复

使用道具 举报


ADVERTISEMENT

发表于 26-10-2005 06:09 PM | 显示全部楼层
任何语言的浮点数都一样。

基本上负的会比正的多“1”,不过对浮点数来说,“1”也实在太微不足道了!
就当做和正数范围一样就可以了。
回复

使用道具 举报

发表于 26-10-2005 08:24 PM | 显示全部楼层
你是用什么compiler的?
回复

使用道具 举报

发表于 26-10-2005 11:57 PM | 显示全部楼层
一般上,C float type的正数和负数范围都一样,是1.175494351E-38 到 3.402823466E+38。
负数的是 -3.402823466E+38 到 -1.175494351E-38。
(在特殊情况下,会有denormalized 的方式,可以储存更小的数目。)

正数和负数的差别只有在sign bit

float用IEEE来储存浮点号码,有32bits (4 bytes)。
23bits mantissa,8bits exponent和 1 sign bit。

mantissa储存 1 到 2 的数目,exponent储存 -127 到 127 (用excess-127 格式)。
所以我们就得到,
最大:2 * 2 ^ 127 = 3.402823466E+38,
最小: 2 * 2 ^ -127 = 1.175494351E-38 。
回复

使用道具 举报

 楼主| 发表于 27-10-2005 02:56 AM | 显示全部楼层
没钱老,用gcc ( mingw ) ... 谢谢这么多位详细的解释
回复

使用道具 举报

发表于 27-10-2005 10:17 PM | 显示全部楼层
原帖由 meemee 于 26-10-2005 11:57 PM 发表
正数和负数的差别只有在sign bit。
浮点数没有使用“补数”吗?
若有的话,差别就不只是 sign bit 而已。
不过基本上不影响有效范围。
回复

使用道具 举报

Follow Us
 楼主| 发表于 28-10-2005 02:00 AM | 显示全部楼层
原帖由 chu10 于 27-10-2005 10:17 PM 发表
浮点数没有使用“补数”吗?
若有的话,差别就不只是 sign bit 而已。
不过基本上不影响有效范围。


补数??可以补充些吗?
回复

使用道具 举报

发表于 28-10-2005 01:34 PM | 显示全部楼层
什么是"补数",2 complement吗?
c/c++的floating point只用一个sign bit来带代表正或负数。
可以算是sign and magnitude的方法。

exponent的部分也没用2 complement,是用excess-127的格式。
不过它的范围我弄错了,应该是 -126 到127
所以它的最大和最小的计算方法是:
最大:2 * 2 ^ +127 = 3.402823466E+38,
最小:1 * 2 ^ -126 = 1.175494351E-38 。

因为mantissa,最大很靠近2而最小的是1。
回复

使用道具 举报


ADVERTISEMENT

发表于 28-10-2005 02:10 PM | 显示全部楼层
1.2e-38 ~ 3.4e38是normalized的范围,在denormalized的范围是:
1.4e-45 ~ 3.4e38。

现在,很多compiler都是用IEEE-754的格式,是1.4e-45 ~ 3.4e38的范围。
回复

使用道具 举报

发表于 28-10-2005 06:39 PM | 显示全部楼层
补数就是complement;
2's complement 就叫做“2的补数”。

那么请问浮点数怎么表示“0”这个数呢?
回复

使用道具 举报

发表于 28-10-2005 07:02 PM | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-7-2025 04:38 AM , Processed in 0.119641 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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