📜  数字 C++ 的参数(1)

📅  最后修改于: 2023-12-03 15:39:56.693000             🧑  作者: Mango

数字 C++ 的参数

C++ 是一种计算机编程语言,具有高效性、可移植性和通用性。在编写数字计算程序时,C++ 提供了多种可用的参数选项,以实现不同的计算目标和结果。

整数类型

整数是 C++ 中的最基本数字类型,用于表示没有小数部分的数值。C++ 提供了多种整数类型,如下所示:

| 类型 | 存储范围 | 备注 | | --- | --- | --- | | int | -2^31 ~ 2^31-1 | 常用类型 | | unsigned int | 0 ~ 2^32-1 | 无符号整数,不能表示负数 | | short | -2^15 ~ 2^15-1 | 短整数类型 | | unsigned short | 0 ~ 2^16-1 | 无符号短整数类型 | | long | -2^63 ~ 2^63-1 | 长整数类型 | | unsigned long | 0 ~ 2^64-1 | 无符号长整数类型 |

整数类型可以用于表示数量、计数、索引等,也可用于数字运算和转换。

int x = 123;
unsigned int y = 456;
short z = -789;
unsigned short w = 987;
long a = 123456789123456789;
unsigned long b = 987654321987654321;

int sum = x + z; // -666
unsigned int diff = y - w; // 331
long prod = a * b; // 121932631137021795981945725543055
浮点类型

浮点数是 C++ 中用于表示有小数部分的数值的数字类型。C++ 提供了两种浮点类型:单精度浮点数和双精度浮点数。

单精度浮点数用于表示小数部分精度较低的数值,通常使用 float 数据类型。其有效位数为 6~7 位左右,存储范围约为 -10^38 ~ 10^38。

双精度浮点数用于表示小数部分精度较高的数值,通常使用 double 数据类型。其有效位数为 15~16 位左右,存储范围约为 -10^308 ~ 10^308。

浮点类型可以用于表示数值计算、物理量等,但由于浮点数的精度问题,对于要求高精度计算结果的场合,建议使用第三方的高精度计算库。

float x = 1.23e4;
double y = 4.56e-7;

float sum = x + y; // 12300.000000476837158
double prod = x * y; // 0.000005620799
    

固定精度类型

C++ 11 以后,也可以使用固定精度类型 std::fixed_point 来表示高精度计算结果。

固定精度类型在实现时采用固定小数点表示法,通过内部整数存储,实现高精度计算。相比于使用浮点类型进行高精度计算,固定精度类型更加精确和可控。

#include <iostream>
#include <iomanip>
#include <cmath>
#include <numeric>

#include <boost/multiprecision/cpp_dec_float.hpp>

using namespace boost::multiprecision;

// 固定精度类型
using fixed_point = cpp_dec_float_100;

int main()
{
  fixed_point x = 3.141592653589793238462643383279502884197169399375;
  fixed_point y = std::sqrt(2);
  
  std::cout << std::fixed << std::setprecision(100);
  std::cout << "x = " << x << std::endl;
  std::cout << "y = " << y << std::endl;
  std::cout << "sum = " << x + y << std::endl;
  std::cout << "prod = " << x * y << std::endl;
  
  return 0;
}
复数类型

C++ 也提供了复数类型 std::complex,用于表示实部和虚部都是浮点数的复数值。

复数可以用于表示电学或光学中的相位、振幅等量,或用于信号处理和图像处理中的频谱分析等。

#include <iostream>
#include <complex>

int main()
{
  std::complex<double> z(3.0, 4.0);
  
  std::cout << "z = " << z << std::endl;
  std::cout << "|z| = " << std::abs(z) << std::endl;
  std::cout << "arg(z) = " << std::arg(z) << std::endl;
  std::cout << "conj(z) = " << std::conj(z) << std::endl;
  std::cout << "z^2 = " << std::pow(z, 2) << std::endl;
  
  return 0;
}
总结

C++ 提供了多种参数选项,用于表示不同类型的数值计算结果。选取合适的数值类型和参数,有助于实现数值计算过程的正确性、高效性和可控性,提高程序的性能和稳定性。