• C++学习笔记


    1.float类型只能表示数字里面的前6位或者前7位。也就是说c++只能保证float类型的数字的前6位是正确的。如果要求的精度更高的话,请使用double和long double。

    float精度是2^23,能保证6位小数内精确。double精度是2^52,能保证15位小数内精确。

    但是,在通常使用中double默认打印位数没有那么多。可以使用强制输出精度的命令语句比较double和float的精度(比较方式:先输入#include <iomanip>,然后在输出语句之前插入cout << setprecision(20);。超过精度范围的小数无效,但是仍然会在屏幕上显示。

    float num1 = 77777.789f;
    float num2 = 77777.788f;
    cout << num1 - num2 << endl;//-->0

     double num3_1 = 10000;
     double num3_2 = 3;
     double num3 = num3_1 / num3_2;
     cout << setprecision(17);
     cout << "结果是:" << num3 << endl;//-->结果是:3333.3333333333335

    2.cin的时候,上衣次输入的东西如果没有使用完会直接留到下一次输入里面。 例子:空格回车或者table会把 Kaneki Ken当成两次输入,当执行到cin>>name2的时候,发现Ken的存在 直接就会把Ken赋值给name2.

        const int size = 20;
        char name1[size];
        char name2[size];
        cout << "输入name1:";
        cin >> name1;
        cout << "输入name2:";
        cin >> name2;
        cout << "name1:" << name1 << "   name2:" << name2 << endl;
        //output
        //输入name1:Kaneki ken
        //输入name2:name1 : Kaneki   name2 : ken

    这个问题的解决方法是使用另外的两个方法1)cin.getline(name,size)   2)cin.get(name,size)

    cin.getline(name,size)  方法会把输入的前size-1个字符赋值给name ,减一的原因是需要留一个“”代表结束。回车符代表着结束,会读取并且换成空字符保存,然后丢弃回车符。

    cin.get(name,size)不会读取掉回车,也不会丢弃。  ps:cin.get(name,size)会把回车符一直留下,会了在输入队列除去回车,需要使用cin.get()  她会读取可以读取的下一个字符 包括回车符。

        const int size = 2;
        char name1[size];
        char name2[size];
        cout << "输入name1:";
        cin.getline(name1, size);
        cout << "输入name2:";
        cin.getline(name2, size);
        cout << "name1:" << name1 << "   name2:" << name2 << endl;
        //out put
        //输入name1:z
        //输入name2:w
        //name1 : z   name2 : w
  • 相关阅读:
    Redis学习笔记
    Springboot + Tomcat跑项目出现端口被占用的问题
    按层打印二叉树
    打印二叉树的镜像——剑指offer
    判断树的子结构——剑指offer
    实习半个月的感想
    使用KMP算法判断是否为旋转词
    微信双开
    win10 右键添加cmd当前目录打开
    勒索邮件
  • 原文地址:https://www.cnblogs.com/kanekiken/p/7401435.html
Copyright © 2020-2023  润新知