首页 技术资料正文

C++double和float(浮点类型)详解(成员变量)

piaodoo 技术资料 2022-08-26 22:08:54 846 0

C++ double和float(浮点类型)详解(成员变量)

C++ double和float(浮点类型)详解

整数并不足以适应许多工作。如果正在编写的程序需要计算货币金额或精确测量,那么就需要一种允许分数值的数据类型。在编程术语上,称之为。浮点数内部的存储方式和科学计数法是一样的。以数字 47 281.97 为例,在科学计数法中,这个数字是 4.728 197X104ccv是什么意思。其中,104等于 10000,4.728 197X 10 000 也就是 47 281.97。该数字的第一部分,即 4.728 197,称为。计算机通常使用 符号来表示浮点值。以 E 符号表示,数字 47 281.97 就应该是 4.728 197E4。E 前的数字部分是尾数,E 之后的部分是 10 的幂。当内存中存储一个浮点数时,它将被存储为尾数和 10 的幂,如表 1 所示。

表 1 显示了科学计数法和E符号表示的其他数字
十进制法科学计数法E 符号表示法
247.912.4791 X1022.4791E2
0.000727.2 X10-47.2E-4
2 900 0002.9 X1062.9E6
float 数据类型被认为是。double 数据类型通常是 float 的两倍大小,因此被认为是。顾名思义,long double 数据类型又比 double 要大。这些数据类型的确切大小取决于当前使用的计算机。唯一可以保证的是:

  • double 至少与 float 一样大。
  • long double 至少与 double一样大。
表 2 显示了通常在 PC 上发现的浮点数据类型的大小和范围。
表 2 PC上的浮点数据类型
数据类型关键字大小范 围有效数字
单精度float4字节数字介于 ±3.4E-38 和 ±3.4E38 之间7
双精度double8字节数字介于 ±1.7E-308 和 ±1.7E308 之间16
高双精度long double8字节数字介于 ±1.7E-308 和 ±1.7E308 之间16

有些编译器会对 long double 类型使用 8 个以上的字节。这意味着更大的数字范围。ccv是什么意思

有些人可能已经注意到,浮点数据类型没有无符号分类,这是因为在所有机器上,float、double 和 long double 数据类型的变量都可以存储正数和负数。下面的程序是使用浮点数据类型的示例。
//程序 1
// This program uses two floating-point data types, float and double.
include 
using namespace std;
int main()
{
    float distance = 1. 496E8; //in kilometers
    double mass = 1.989E30; //in kilograms
    cout << "The Sun is " << distance << " kilometers away.\n";
    cout << "The Sun\&39;s mass is " << mass << "kilogrames.\n";
    return 0;
}
程序输出结果:

The Sun is 1.496e+008 kilometers away.The Sun&39;s mass is 1.989e+030 kilograms.ccv是什么意思

浮点常数

浮点常数有时也叫,它们可以按多种方式表示,如程序 1 所示,E 符号表示法就是其中的一种。在要编写非常大或非常小的数字时,这可能是最简单的方法。E 符号表示法既可以使用大写字母 E,也可以使用小写字母 e。注意,在源代码中,常数被写为 1.496E8 和 1.989E30,但是程序却将它们打印为 1.496e+008 和 1.989e+030。这两组数字是一样的。指数前面的加号也可加可不加。也可以使用十进制符号来表示浮点常数。例如,常数 1.496E8 可以写成:

149600000.0

显然,E 符号表示法对于冗长的数字更为方便;但对于像 47.39 这样的数字,十进制格式就要优于 4.739E1。以下所有浮点常数都是等效的:
  • 1.496E8
  • 1.496e8
  • 1.496E+8
  • 1.496e+8
  • 149600000.0
浮点常数通常以 double 类型存储在内存中。如果需要强制将这类常数存储为 float 类型,则可以将 F 或 f 字母附加到其末尾。例如,以下常数将被存储为 float 类型数字:

1.2F45.907f

注意,由于浮点常数通常是以 double 类型存储在内存中的,所以,在为 float 变量分配一个浮点常数时,某些编译器会发出警告消息。例如,如果 num 是一个 float 类型的变量,则以下语句可能会导致编译器生成警告消息:

num = 14.725;

在这种情况下,可以通过在浮点常数后面附加f后缀来抑制错误消息,如下所示:

num = 14.725f;

如果要强制将某个值存储为 long double,则可以给它附加一个 L 后缀,如下所示:

1034.56L

由于小数点的存在,编译器并不会将它与长整型混淆。也可以使用小写字母l来将浮点常数定义为 long double,但是最好能使用大写字母 L,因为小写字母 l 容易与数字 1 混淆。

将浮点值分配给整型变量

当某个浮点值被分配给整型变量时,该值的小数部分(即小数点后的部分)将被丢弃。这是因为整型变量不能包含任何包含小数的值。请看以下代码示例:

int number;number= 7.8;    // 实际给 number 赋值为 7ccv是什么意思

该代码尝试将浮点值 7.8 赋给整型变量 number,但这是不可能的,所以 number 实际获得的赋值为 7,分数部分则被丢弃。当以这种方式丢弃一部分值时,该值即所谓被截断。将某个浮点变量赋值给整型变量具有相同的效果。请看以下代码示例:

int intVar;double doubleVar = 7.8;intVar = doubleVar; // intVar被赋值为7//doubleVar 的值仍为 7.8

警告,浮点变量可以容纳比整型变量更大的值范围。如果浮点值存储在整型变量中,并且整型变量的整数部分(即小数点前的部分)太大,则整型变量中将存储无效值。

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/119261.html

搜索