Home 格式化输出小节
Post
Cancel

格式化输出小节

本页总结Python、C和C++的格式化输出。

Python

参考1 参考2

使用

1
placeholder_str.format(value1, value2...)

进行字符串格式化。其中

  • placeholder_str是包含{}的字符串,{}可以是空,下标值或参数名;
  • value1value2...可以是值,也可以是键值对。

示例

1
2
3
print("My name is {}, I'm {}".format("Zander", 25))
print("My name is {0}, I'm {1}".format("Zander", 25))
print("My name is {name}, I'm {age}".format(name="Zander", age=25))

其中第三行还有一种等效写法为

1
2
3
name = "Zander"
age = 25
print(f"My name is {name}, I'm {age}")

format()还可用于数字的格式化(这里介绍了各种各样支持的format,以供查询),比如以下常用的:

示例

  • 使用:f将数字转化为定点数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      # default with 6 decimals.
      print("The price is {:f} dollars.".format(45))  
      # The price is 45.000000 dollars.
        
      # use `:.<n>f` to specify the number of decimals
      print("The price is {:.2f} dollars.".format(45))
      # The price is 45.000000 dollars.
        
      # use key=value and number format simultaneously
      print("The price is {price:.2f} dollars.".format(price=45))
      # The price is 45.00 dollars.
    

C

使用printf()进行格式化输出。这里介绍了各种各样支持的format,以供查询。

以下常用的:

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h> 
  
int main() { 
    // print signed decimal integer
    int x = 45; 
    printf("%d\n", x);    // 45

    // print float value
    float f = 3.1416; 
    // the default number of digits to be printed after the decimal point is 6
    printf("%f\n", f);    // 3.141600
    // use `%.<n>f` to specify the number of digits to be printed after the decimal point
    printf("%.3f\n", f); // 3.142
    
    // print string of characters
    char str[] = "Hello World"; 
    printf("%s\n", str);  // Hello World
}
  • 注:format和实际的数据类型务必对应,否则显示的数值妈都不认识。

C++

C++同样支持printf()。但值得注意一些地方:

  • printf输出C++的string?

    • printf不支持直接输出string,需要用.c_str()进行转换
    1
    2
    
    string a = "c++ string\n";
    printf("%s", a.c_str());
    

另外C++还支持cout,使用起来比较简单,这里介绍其常见用法。以下是一些值得注意的地方:

  • 设定输出的精度:setprecision(n)

    • 参考

    • 控制输出的浮点数字的有效数字位数

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      #include <iostream>  // std::cout, std::fixed
      #include <iomanip>   // std::setprecision
      using namespace std;
          
      int main()
      {
          double number1 = 132.364, number2 = 26.91;
          double quotient = number1 / number2;         // 4.91876625789669...
          cout << quotient << endl;                    // 4.91877, 默认显示6位有效数字
          cout << setprecision(5) << quotient << endl; // 4.9188, 设定显示5位有效数字
          cout << setprecision(4) << quotient << endl; // 4.919, 设定显示4位有效数字
          return 0;
      }
      
    • 如果一个数字的值可以由少于 setprecision 指定的精度位数来表示,则操作符将不起作用

      1
      2
      3
      
      double dollars = 24.51;
      cout << dollars << endl;  // 24.51
      cout << setprecision (5) << dollars << endl; // 24.51
      
    • 配合fixed使用可实现控制小数点后n位

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
      #include <iostream>     // std::cout, std::fixed
      #include <iomanip>      // std::setprecision
      using namespace std;
          
      int main () {
        double f = 3.1415926;
        cout << setprecision(5) << f << '\n';            // 3.1416
        cout << fixed << setprecision(5) << f << '\n';   // 3.14159
        cout << fixed << setprecision(10) << f << '\n';  // 3.1415926000
        return 0;
      }
      
This post is licensed under CC BY 4.0 by the author.

CMake学习

Flask项目部署记录(uwsgi)