首页 > 编程语言 >C++ Primer Plus 代码学习解析(第三章 3.8-3.11)

C++ Primer Plus 代码学习解析(第三章 3.8-3.11)

时间:2024-03-28 12:32:46浏览次数:34  
标签:cout 3.11 float ios C++ base Plus double 类型

3.8 floatnum.cpp

#include <iostream>
int main()
{
    using namespace std;
    cout.setf(ios_base::fixed, ios_base::floatfield); 
    float tub = 10.0 / 3.0;     
    double mint = 10.0 / 3.0;   
    const float million = 1.0e6;

    cout << "tub = " << tub;
    cout << ", a million tubs = " << million * tub;
    cout << ",\nand ten million tubs = ";
    cout << 10 * million * tub << endl;

    cout << "mint = " << mint << " and a million mints = ";
    cout << million * mint << endl;
    // cin.get();
    return 0;
}
  1. 该函数主要演示了float类型和double类型的验算以及精度
  2. 用乘以million的方法使程序显示小数点后六位
  3. 从结果来看double的精度要高于float

3.9 fltadd.cpp

#include <iostream>
int main()
{
    using namespace std;
    float a = 2.34E+22f;
    float b = a + 1.0f;

    cout << "a = " << a << endl;
    cout << "b - a = " << b - a << endl;
    return 0;
}
  1. 该函数主要探究float类型的精度问题
  2. 后缀为f,代表其为float类型
  3. b-a结果为0,证明float类型运算精度低

3.10 arith.cpp

#include <iostream>
int main()
{
    using namespace std;
    float hats, heads;

    cout.setf(ios_base::fixed, ios_base::floatfield); 
    cout << "Enter a number: ";
    cin >> hats;
    cout << "Enter another number: ";
    cin >> heads;

    cout << "hats = " << hats << "; heads = " << heads << endl;
    cout << "hats + heads = " << hats + heads << endl;
    cout << "hats - heads = " << hats - heads << endl;
    cout << "hats * heads = " << hats * heads << endl;
    cout << "hats / heads = " << hats / heads << endl;

    return 0;
}
  1. 该函数主要探究float类型之间运算的问题
  2. ios_base::fixed代表使用定点计数法,如1234.5(与科学计数法相对应,如1.2345e4)
  3. ios_base::floatfield代表输出到小数点后6位。
  4. 由于float计算精度有限,所以c++只保证6为有效位,所以以下奇怪的结果需要将其四舍五入至六位,如45.509998需看做45.5100

3.11 divide.cpp

#include <iostream>
int main()
{
    using namespace std;
    cout.setf(ios_base::fixed, ios_base::floatfield);
    cout << "Integer division: 9/5 = " << 9 / 5 << endl;
    cout << "Floating-point division: 9.0/5.0 = ";
    cout << 9.0 / 5.0 << endl;
    cout << "Mixed division: 9.0/5 = " << 9.0 / 5 << endl;
    cout << "double constants: 1e7/9.0 = ";
    cout << 1.e7 / 9.0 << endl;
    cout << "float constants: 1e7f/9.0f = ";
    cout << 1.e7f / 9.0f << endl;
 

    return 0;
}
  1. 此代码探究不同类型下数字相除的结果
  2. 首先是整数部分,9/5得到整数1,小数部分舍弃
  3. 之后两行表明,无论是9.0/5.0还是9.0/5,只要有一个操作数是浮点数,结果都为浮点数,这涉及到c++的类型转换,之后也有例子
  4. 之后输出表明c++默认浮点常量为double类型,两个都是double类型操作数,运算结果为double,两个都是float,结果为float类型

标签:cout,3.11,float,ios,C++,base,Plus,double,类型
From: https://blog.csdn.net/heyijieyou1/article/details/137103765

相关文章

  • C++之STL整理(2)之vector超详用法整理
    C++之STL整理(2)之vector用法(创建、赋值、方法)整理注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的vector用法整理C++之STL整理(2)之vector用法(创建、赋值、方法)整理一、vector的初始化1、默认构造函数2、拷贝构造函数copy区间3......
  • 【C++】自增运算符重载及其效率问题
    自增运算符重载总所周知,C++的自增运算符有两种基本使用方法,在这里我们分别称为i++和++i,想必大家在C语言课上已经学了自增运算符和自减运算符,这里就不再赘述,这里主要讲解自增运算符重载,自减运算符完全可以触类旁通。首先了解什么是运算符重载。定义:运算符重载是面向对象编......
  • C++11 新特性:非受限联合体
    在C++11之前,C++的联合体(union)主要被用于内存节省和对不同数据类型的同一片内存区域的访问。然而,传统的联合体存在着严格的限制,它只能包含POD(PlainOldData,简单旧数据类型)类型的成员。也就是说不能在联合体中包含有非平凡(non-trivial)构造函数、复制构造函数、移动构造......
  • 部署elementPlus离线版本
    最近项目需要离线开发,不能联网查一些组件的api,于是决定搞一个离线版的文档一、下载官方文档下载地址github地址gitee地址选择版本直接下载压缩包二、下载live-server插件全局下载live-server插件npmilive-server-gvscode下载三、运行在文件目录下......
  • 华为OD机试 - 最多购买宝石数目(Java & JS & Python & C & C++)
    须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输入描述输出描述解题思路:题目描述橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i]0≤i<nn=gems.length宝石可同时......
  • C++枚举类型
    枚举类型枚举类型使我们可以将一组整型常量组织在一起。和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。C++包含两种枚举:限定作用域的和不限定作用域的。限定作用域的枚举类型C++11新标准引入了限定作用域的枚举类型。定义限定作用域的枚举类型的一......
  • linux安装/切换不同版本c/c++
    查看ubuntu系统上g++的版本:ls/usr/bin/g++*安装指定版本gcc和g++#以version==4.9为例sudoapt-getinstallgcc-4.9g++-4.9切换不同版本当ubuntu系统上安装了不同版本的gcc和g++,可以使用update-alternatives命令设置默认使用哪个版本,典型的如在Ubuntu16.04里安......
  • 小猴编程周赛C++ | 最小能力差
    学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!附上汇总贴:小猴编程C++|汇总-CSDN博客【题目描述】某校信竞社团有nnn......
  • 小猴编程周赛C++ | 卡牌顺序
    学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!附上汇总贴:小猴编程C++|汇总-CSDN博客【题目描述】小猴有nnn卡牌,编号......
  • C++之inline
    一.inlineinline是C++的一种机制,作用于函数,将一个函数声明为inline,可以让编译器在编译代码时,将“对此函数的每一个调用”都以函数本体替换之,该过程发生在编译期间。inline的优点:它可以省去函数调用所带来的额外开销,提高程序的速度。inline的缺点:过分使用inline函数会导......