c++小数输出规则,fixed保留小数,setprecision()设定位数

#include <iostream>
#include <iomanip>

int main() {
    //default
    // std::cout<<"default========================================"<<std::endl;
    // std::cout<<123.1<<std::endl;          // 123.1
    // std::cout<<123.12<<std::endl;         // 123.12
    // std::cout<<123.123<<std::endl;        // 123.123
    // std::cout<<123.1234<<std::endl;       // 123.123
    // std::cout<<123.12345<<std::endl;      // 123.123
    // std::cout<<123.123456<<std::endl;     // 123.123
    // std::cout<<123.1234567<<std::endl;    // 123.123
    // std::cout<<123.12345678<<std::endl;   // 123.123
    // std::cout<<123.123456789<<std::endl;  // 123.123
    // std::cout<<123.1234567891<<std::endl; // 123.123
        
    // std::cout<<"fixed========================================"<<std::endl;
    // std::cout<<std::fixed<<123<<std::endl;//123
    // std::cout<<std::fixed<<123.0<<std::endl;//123.000000
    // std::cout<<std::fixed<<123.1<<std::endl;          // 123.100000
    // std::cout<<std::fixed<<123.12<<std::endl;         // 123.120000
    // std::cout<<std::fixed<<123.123<<std::endl;        // 123.123000
    // std::cout<<std::fixed<<123.1234<<std::endl;       // 123.123400
    // std::cout<<std::fixed<<123.12345<<std::endl;      // 123.123450
    // std::cout<<std::fixed<<123.123456<<std::endl;     // 123.123456
    // std::cout<<std::fixed<<123.1234567<<std::endl;    // 123.123457
    // std::cout<<std::fixed<<123.12345678<<std::endl;   // 123.123457
    // std::cout<<std::fixed<<123.123456789<<std::endl;  // 123.123457
    // std::cout<<std::fixed<<123.1234567891<<std::endl; // 123.123457
    
    // std::cout<<"setprecision()========================================"<<std::endl;
    // std::cout<<std::setprecision(5)<<123.1<<std::endl;          // 123.1
    // std::cout<<std::setprecision(5)<<123.12<<std::endl;         // 123.12
    // std::cout<<std::setprecision(5)<<123.123<<std::endl;        // 123.12
    // std::cout<<std::setprecision(5)<<123.1234<<std::endl;       // 123.12
    // std::cout<<std::setprecision(5)<<123.12345<<std::endl;      // 123.12
    // std::cout<<std::setprecision(5)<<123.123456<<std::endl;     // 123.12
    // std::cout<<std::setprecision(5)<<123.1234567<<std::endl;    // 123.12
    // std::cout<<std::setprecision(5)<<123.12345678<<std::endl;   // 123.12
    // std::cout<<std::setprecision(5)<<123.123456789<<std::endl;  // 123.12
    // std::cout<<std::setprecision(5)<<123.1234567891<<std::endl; // 123.12
    
    // std::cout<<std::setprecision(8)<<123.1<<std::endl;          // 123.1
    // std::cout<<std::setprecision(8)<<123.12<<std::endl;         // 123.12
    // std::cout<<std::setprecision(8)<<123.123<<std::endl;        // 123.123
    // std::cout<<std::setprecision(8)<<123.1234<<std::endl;       // 123.1234
    // std::cout<<std::setprecision(8)<<123.12345<<std::endl;      // 123.12345
    // std::cout<<std::setprecision(8)<<123.123456<<std::endl;     // 123.12346
    // std::cout<<std::setprecision(8)<<123.1234567<<std::endl;    // 123.12346
    // std::cout<<std::setprecision(8)<<123.12345678<<std::endl;   // 123.12346
    // std::cout<<std::setprecision(8)<<123.123456789<<std::endl;  // 123.12346
    // std::cout<<std::setprecision(8)<<123.1234567891<<std::endl; // 123.12346
    
    //default
    // std::cout<<123<<std::endl;                  // 123
    // std::cout<<123456<<std::endl;               // 123456
    // std::cout<<123456789<<std::endl;            // 123456789
    // std::cout<<123.0<<std::endl;                // 123
    // std::cout<<123.1<<std::endl;                // 123.1
    // std::cout<<123456.1<<std::endl;             // 123456
    // std::cout<<123456789.1<<std::endl;          // 1.23457e+08
    // std::cout<<123.123456789<<std::endl;        // 123.123
    // std::cout<<123456.123456789<<std::endl;     // 123456
    // std::cout<<123456789.123456789<<std::endl;  // 1.23457e+08
    
    //fixed
    // std::cout<<std::fixed<<123<<std::endl;                  // 123
    // std::cout<<std::fixed<<123456<<std::endl;               // 123456
    // std::cout<<std::fixed<<123456789<<std::endl;            // 123456789
    // std::cout<<std::fixed<<123.0<<std::endl;                // 123.000000
    // std::cout<<std::fixed<<123.1<<std::endl;                // 123.100000
    // std::cout<<std::fixed<<123456.1<<std::endl;             // 123456.100000
    // std::cout<<std::fixed<<123456789.1<<std::endl;          // 123456789.100000
    // std::cout<<std::fixed<<123.123456789<<std::endl;        // 123.123457
    // std::cout<<std::fixed<<123456.123456789<<std::endl;     // 123456.123457
    // std::cout<<std::fixed<<123456789.123456789<<std::endl;  // 123456789.123457
    
    
    //setprecision(n)
    // std::cout<<std::setprecision(8)<<123<<std::endl;                  // 123
    // std::cout<<std::setprecision(8)<<123456<<std::endl;               // 123456
    // std::cout<<std::setprecision(8)<<123456789<<std::endl;            // 123456789
    // std::cout<<std::setprecision(8)<<123.0<<std::endl;                // 123
    // std::cout<<std::setprecision(8)<<123.1<<std::endl;                // 123.1
    // std::cout<<std::setprecision(8)<<12345678.1<<std::endl;           // 12345678
    // std::cout<<std::setprecision(8)<<123456789.1<<std::endl;          // 1.2345679e+08
    // std::cout<<std::setprecision(8)<<123.123456789<<std::endl;        // 123.12346
    // std::cout<<std::setprecision(8)<<123456.123456789<<std::endl;     // 123456.12
    // std::cout<<std::setprecision(8)<<123456789.123456789<<std::endl;  // 1.2345679e+08
    
    return 0;
}

/*
结论: 
若输出整数,没有小数部分,则默认输出所有位数

以下是有小数部分的情况,
小数(有小数部分)的默认保留模式是保留有效数字,保留位数是6位
6位是从最高位开始的6位, 包括整数部分和小数部分
整数部分有效位数大于6位时会使用科学计数法输出, 科学计数法有效位数为6位,第6位四舍五入
整数部分有效位数小于等于6位时,不会使用科学计数法
    整数部分完整输出后, 已输出的数字不足6位时
    会输出小数部分的有效位数(尾部0不算有效位数),从最高位开始
    若小数部分也不能补足6位, 则输出结束, 并不会在小数部分末尾以0来补足
std::fixed的影响会让保留的位数从有效数字变为小数点后数字, 会在小数部分末尾补0以补足位数
若不更改位数, 则位保留6位小数, 不足6位会在小数部分末尾补0补足6位
std::setprecision(x)会将保留的位数从6改为x然后再适用以上规则
*/
posted @ 2025-02-03 16:07  Kazuma_124  阅读(249)  评论(0)    收藏  举报