-
Notifications
You must be signed in to change notification settings - Fork 25
/
ch15s02.html
3 lines (3 loc) · 4.75 KB
/
ch15s02.html
1
2
3
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2. 浮点型</title><link rel="stylesheet" href="styles.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="Linux C编程一站式学习" /><link rel="up" href="ch15.html" title="第 15 章 数据类型详解" /><link rel="prev" href="ch15s01.html" title="1. 整型" /><link rel="next" href="ch15s03.html" title="3. 类型转换" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2. 浮点型</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch15s01.html">上一页</a> </td><th width="60%" align="center">第 15 章 数据类型详解</th><td width="20%" align="right"> <a accesskey="n" href="ch15s03.html">下一页</a></td></tr></table><hr /></div><div class="sect1" lang="zh-cn" xml:lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2757747"></a>2. 浮点型</h2></div></div></div><p>C标准规定的浮点型有<code class="literal">float</code>、<code class="literal">double</code>、<code class="literal">long double</code>,和整型一样,既没有规定每种类型占多少字节,也没有规定采用哪种表示形式。浮点数的实现在各种平台上差异很大,有的处理器有浮点运算单元(FPU,Floating Point Unit)<a id="id2757776" class="indexterm"></a>,称为硬浮点(Hard-float)<a id="id2757784" class="indexterm"></a>实现;有的处理器没有浮点运算单元,只能做整数运算,需要用整数运算来模拟浮点运算,称为软浮点(Soft-float)<a id="id2757794" class="indexterm"></a>实现。大部分平台的浮点数实现遵循IEEE 754,<code class="literal">float</code>型通常是32位,<code class="literal">double</code>型通常是64位。</p><p><code class="literal">long double</code>型通常是比<code class="literal">double</code>型精度更高的类型,但各平台的实现有较大差异。在x86平台上,大多数编译器实现的<code class="literal">long double</code>型是80位,因为x86的浮点运算单元具有80位精度,<code class="literal">gcc</code>实现的<code class="literal">long double</code>型是12字节(96位),这是为了对齐到4字节边界(在<a class="xref" href="ch19s04.html#asmc.structunion">第 4 节 “结构体和联合体”</a>详细讨论对齐的问题),也有些编译器实现的<code class="literal">long double</code>型和<code class="literal">double</code>型精度相同,没有充分利用x86浮点运算单元的精度。其它体系结构的浮点运算单元的精度不同,编译器实现也会不同,例如PowerPC上的<code class="literal">long double</code>型通常是128位。</p><p>以前我们只用到最简单的浮点数常量,例如3.14,现在看看浮点数常量还有哪些写法。由于浮点数在计算机中的表示是基于科学计数法的,所以浮点数常量也可以写成科学计数法的形式,尾数和指数之间用e或E隔开,例如314e-2表示314×10<sup>-2</sup>,注意这种表示形式基数是10<sup>[<a id="id2757890" href="#ftn.id2757890" class="footnote">27</a>]</sup>,如果尾数的小数点左边或右边没有数字则表示这一部分为零,例如3.e-1,.987等等。浮点数也可以加一个后缀,例如3.14f、.01L,浮点数的后缀和类型之间的对应关系比较简单,没有后缀的浮点数常量是<code class="literal">double</code>型的,有后缀f或F的浮点数常量是<code class="literal">float</code>型的,有后缀l或L的浮点数常量是<code class="literal">long double</code>型的。</p><div class="footnotes"><br /><hr width="100" align="left" /><div class="footnote"><p><sup>[<a id="ftn.id2757890" href="#id2757890" class="para">27</a>] </sup>C99引入一种新的十六进制浮点数表示,基数是2,本书不做详细介绍。</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch15s01.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="ch15.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="ch15s03.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">1. 整型 </td><td width="20%" align="center"><a accesskey="h" href="index.html">起始页</a></td><td width="40%" align="right" valign="top"> 3. 类型转换</td></tr></table></div></body></html>