C++参悟:数值运算相关

数值运算相关

  • 一、概述
  • 二、常用数学函数
    • 1. 基础运算
      • 1. 浮点值的绝对值( |x| )
      • 2. 浮点除法运算的余数
      • 3. 除法运算的有符号余数
      • 4. 除法运算的有符号余数和最后三个二进制位
      • 5. 混合的乘加运算
      • 6. 两个浮点值的较大者
      • 7. 两个浮点值的较小者
      • 8. 两个浮点值的正数差( max(0, x-y) )
    • 2. 指数函数
      • 1. 返回 e 的给定次幂( e^x^ )
      • 2. 返回 2 的给定次幂( 2^x^ )
      • 3. 返回 e 的给定次幂减一( e^x^-1 )
      • 4. 自然(以 e 为底)对数( ln(x) )
      • 5. 常用(以 10 为底)对数( log~10~(x) )
      • 6. 给定数值的以 2 为底的对数( log~2~(x) )
      • 7. 加上给定数值的自然(以 e 为底)对数( ln(1+x) )
    • 3. 幂函数
      • 1. 求某数的给定次幂( x^y^ )
      • 2. 计算平方根( √x )
      • 3. 计算立方根( 3√x )
      • 4. 计算两个给定数的平方和的平方根( √x^2^+y^2^ )
    • 4. 三角函数
      • 1. 计算正弦( sin(x) )
      • 2. 计算余弦( cos(x) )
      • 3. 计算正切( tan(x) )
      • 4. 计算反正弦( arcsin(x) )
      • 5. 计算反余弦( arccos(x) )
      • 6. 计算反正切( arctan(x) )
      • 7. 反正切,用符号确定象限
    • 5. 双曲函数
      • 1. 计算双曲正弦( sinh(x) )
      • 2. 计算双曲余弦( cosh(x) )
      • 3. 计算双曲正切( tanh(x) )
      • 4. 计算反双曲正弦( arsinh(x) )
      • 5. 计算反双曲余弦( arcosh(x) )
      • 6. 计算反双曲正切( artanh(x) )
    • 6. 误差与伽马函数
      • 1. 误差函数
      • 2. 补误差函数
      • 3. gamma 函数
      • 4. gamma 函数的自然对数
    • 7. 最接近整数的浮点运算
      • 1. 不小于给定值的最接近整数值
      • 2. 不大于给定值的最接近整数
      • 3. 绝对值不大于给定值的最接近整数
      • 4. 最接近整数,中间情况下向远离零舍入
      • 5. 使用当前舍入模式的最接近整数
      • 6. 使用当前舍入模式的最接近整数
    • 8. 浮点操作函数
    • 9. 分类与比较
  • 三、宏常量
    • 1. 常规
    • 2. 分类
  • 四、错误处理

一、概述

C++为我们提供了很多已经定义好的一些数学函数,这些函数的使用一定要注意函数的定义域,因为计算机表示的数据有限,有些非法的运算的结果也是在数值运算库中定义好了的。

二、常用数学函数

在标准库中基本上提供了对于 float、double、long double 类型参数的输入、也有对应的参数 float、double、long double 的输出。就像下面的可以看得出来 不带 任何的后缀是有3个类型的重载、带 ‘f’ 的指定了强制 float 类型、带 ‘l’ 的强制指定了 long double 类型。基本上下面提到的函数都会有这些后缀以满足不同精度的需求。

float       	fmod ( float x, float y );
double      	fmod ( double x, double y );
long double 	fmod ( long double x, long double y );  float       	fmodf( float x, float y );
long double 	fmodl( long double x, long double y );

1. 基础运算

1. 浮点值的绝对值( |x| )

基础定义: 就是求一个数值的绝对值

double  abs( double arg );

abs(float x)
fabs
fabsf
fabsl

此函数不受制于任何指定于 math_errhandling 的错误条件。

若实现支持 IEEE 浮点算术( IEC 60559 ),则

  • 若输入参数为 ±0 ,则返回 +0
  • 若输入参数为 ±∞ ,则返回 +∞
  • 若输入参数为 NaN ,则返回 NaN

示例:

#include <iostream>
#include <cmath>int main()
{std::cout << "abs(+3.0) = " << std::abs(+3.0) << '\n'<< "abs(-3.0) = " << std::abs(-3.0) << '\n';// 特殊值std::cout << "abs(-0.0) = " << std::abs(-0.0) << '\n'<< "abs(-Inf) = " << std::abs(-INFINITY) << '\n'<< "abs(-NaN) = " << std::abs(-NAN) << '\n';
}
//输出
abs(+3.0) = 3
abs(-3.0) = 3
abs(-0.0) = 0
abs(-Inf) = inf
abs(-NaN) = nan

2. 浮点除法运算的余数

基础定义:计算除法运算 x/y 的浮点余数。有点像整数的余数运算符 %

double fmod ( double x, double y );

fmod
fmodf
fmodl

#include <iostream>
#include <cmath>
#include <cfenv>#pragma STDC FENV_ACCESS ON
int main()
{std::cout << "fmod(+5.1, +3.0) = " << std::fmod(5.1,3) << '\n'<< "fmod(-5.1, +3.0) = " << std::fmod(-5.1,3) << '\n'<< "fmod(+5.1, -3.0) = " << std::fmod(5.1,-3) << '\n'<< "fmod(-5.1, -3.0) = " << std::fmod(-5.1,-3) << '\n';// 特殊值std::cout << "fmod(+0.0, 1.0) = " << std::fmod(0, 1) << '\n'<< "fmod(-0.0, 1.0) = " << std::fmod(-0.0, 1) << '\n'<< "fmod(5.1, Inf) = " << std::fmod(5.1, INFINITY) << '\n';// 错误处理std::feclearexcept(FE_ALL_EXCEPT);std::cout << "fmod(+5.1, 0) = " << std::fmod(5.1, 0) << '\n';if(std::fetestexcept(FE_INVALID))std::cout << "    FE_INVALID raised\n";
}
// 输出
fmod(+5.1, +3.0) = 2.1
fmod(-5.1, +3.0) = -2.1
fmod(+5.1, -3.0) = 2.1
fmod(-5.1, -3.0) = -2.1
fmod(+0.0, 1.0) = 0
fmod(-0.0, 1.0) = -0
fmod(5.1, Inf) = 5.1
fmod(+5.1, 0) = -nanFE_INVALID raised

3. 除法运算的有符号余数

基础定义:此函数所计算的除法运算 x/y 的 IEEE 浮点余数,准确地为值 x - n*y ,其中值 n 是最接近 x/y 准确值的整数值。 |n-x/y| = ½ 时,选择作为偶数的 n 。与 std::fmod() 相反,不保证返回值拥有与 x 相同的符号。若返回值是 0 ,则它拥有与 x 相同的符号。

double      remainder ( double x, double y );

remainder
remainderf
remainderl

#include <iostream>
#include <cmath>
#include <cfenv>#pragma STDC FENV_ACCESS ON
int main()
{std::cout << "remainder(+5.1, +3.0) = " << std::remainder(5.1,3) << '\n'<< "remainder(-5.1, +3.0) = " << std::remainder(-5.1,3) << '\n'<< "remainder(+5.1, -3.0) = " << std::remainder(5.1,-3) << '\n'<< "remainder(-5.1, -3.0) = " << std::remainder(-5.1,-3) << '\n';// 特殊值std::cout << "remainder(-0.0, 1.0) = " << std::remainder(-0.0, 1) << '\n'<< "remainder(5.1, Inf) = " << std::remainder(5.1, INFINITY) << '\n';// 错误处理std::feclearexcept(FE_ALL_EXCEPT);std::cout << "remainder(+5.1, 0) = " << std::remainder(5.1, 0) << '\n';if(fetestexcept(FE_INVALID))std::cout << "    FE_INVALID raised\n";
}
//输出
remainder(+5.1, +3.0) = -0.9
remainder(-5.1, +3.0) = 0.9
remainder(+5.1, -3.0) = -0.9
remainder(-5.1, -3.0) = 0.9
remainder(-0.0, 1.0) = -0
remainder(5.1, Inf) = 5.1
remainder(+5.1, 0) = -nanFE_INVALID raised

4. 除法运算的有符号余数和最后三个二进制位

基础定义:
remquo
remquof
remquol

5. 混合的乘加运算

基础定义:计算 (x*y) + z ,如同用无限精度,而仅舍入一次到结果类型。

double      fma ( double x, double y, double z );

fma
fmaf
fmal

#include <iostream>
#include <iomanip>
#include <cmath>
#include <cfenv>
#pragma STDC FENV_ACCESS ON
int main()
{// 演示 fma 与内建运算符间的差别double in = 0.1;std::cout << "0.1 double is " << std::setprecision(23) << in<< " (" << std::hexfloat << in << std::defaultfloat << ")\n"<< "0.1*10 is 1.0000000000000000555112 (0x8.0000000000002p-3), "<< "or 1.0 if rounded to double\n";double expr_result = 0.1 * 10 - 1;double fma_result = fma(0.1, 10, -1);std::cout << "0.1 * 10 - 1 = " << expr_result<< " : 1 subtracted after intermediate rounding\n"<< "fma(0.1, 10, -1) = " << std::setprecision(6) << fma_result << " ("<< std::hexfloat << fma_result << std::defaultfloat << ")\n\n";// fma 用于 double-double 算术double high = 0.1 * 10;double low = fma(0.1, 10, -high);std::cout << "in double-double arithmetic, 0.1 * 10 is representable as "<< high << " + " << low << "\n\n";// 错误处理std::feclearexcept(FE_ALL_EXCEPT);std::cout << "fma(+Inf, 10, -Inf) = " << std::fma(INFINITY, 10, -INFINITY) << '\n';if(std::fetestexcept(FE_INVALID))std::cout << "    FE_INVALID raised\n";
}
//输出
0.1 double is 0.10000000000000000555112 (0x1.999999999999ap-4)
0.1*10 is 1.0000000000000000555112 (0x8.0000000000002p-3), or 1.0 if rounded to double
0.1 * 10 - 1 = 0 : 1 subtracted after intermediate rounding
fma(0.1, 10, -1) = 5.55112e-17 (0x1p-54)in double-double arithmetic, 0.1 * 10 is representable as 1 + 5.55112e-17fma(+Inf, 10, -Inf) = -nanFE_INVALID raised

6. 两个浮点值的较大者

基础定义:返回二个浮点数的较大者

double      fmax ( double x, double y );

fmax
fmaxf
fmaxl


#include <iostream>
#include <cmath>int main()
{std::cout << "fmax(2,1)    = " << std::fmax(2,1) << '\n'<< "fmax(-Inf,0) = " << std::fmax(-INFINITY,0) << '\n'<< "fmax(NaN,-1) = " << std::fmax(NAN,-1) << '\n';
}
//输出:
fmax(2,1)    = 2
fmax(-Inf,0) = 0
fmax(NaN,-1) = -1

7. 两个浮点值的较小者

基础定义:返回二个浮点数的较小者

double      fmin ( double x, double y );

fmin
fminf
fminl

#include <iostream>
#include <cmath>int main()
{std::cout << "fmin(2,1)    = " << std::fmin(2,1) << '\n'<< "fmin(-Inf,0) = " << std::fmin(-INFINITY,0) << '\n'<< "fmin(NaN,-1) = " << std::fmin(NAN,-1) << '\n';
}
//输出
fmin(2,1)    = 1
fmin(-Inf,0) = -inf
fmin(NaN,-1) = -1

8. 两个浮点值的正数差( max(0, x-y) )

基础定义:返回 x 与 y 间的正差,即若 x>y 则返回 x-y ,否则(若 x≤y )返回 +0 。

double      fdim ( double x, double y );

fdim
fdimf
fdiml

#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
#include <cfenv>
#pragma STDC FENV_ACCESS ON
int main()
{std::cout << "fdim(4, 1) = " << std::fdim(4, 1)<< " fdim(1, 4) = " << std::fdim(1, 4) << '\n'<< "fdim(4,-1) = " << std::fdim(4, -1)<< " fdim(1,-4) = " << std::fdim(1, -4) << '\n';// 错误处理errno = 0;std::feclearexcept(FE_ALL_EXCEPT);std::cout << "fdim(1e308, -1e308) = " << std::fdim(1e308, -1e308) << '\n';if (errno == ERANGE)std::cout << "    errno == ERANGE: " << std::strerror(errno) << '\n';if (std::fetestexcept(FE_OVERFLOW))std::cout << "    FE_OVERFLOW raised\n";
}
//输出
fdim(4, 1) = 3 fdim(1, 4) = 0
fdim(4,-1) = 5 fdim(1,-4) = 5
fdim(1e308, -1e308) = inferrno == ERANGE: Numerical result out of rangeFE_OVERFLOW raised

2. 指数函数

1. 返回 e 的给定次幂( ex

基础定义

double      exp ( double arg );

exp
expf
expl

图像
在这里插入图片描述

2. 返回 2 的给定次幂( 2x

基础定义

double      exp2 ( double n );

exp2
exp2f
exp2l

图像

在这里插入图片描述

3. 返回 e 的给定次幂减一( ex-1 )

基础定义:

double      expm1 ( double arg );`在这里插入代码片`

expm1
expm1f
expm1l

图像
在这里插入图片描述

4. 自然(以 e 为底)对数( ln(x) )

基础定义

double      log ( double arg );

log
logf
logl

图像
在这里插入图片描述

5. 常用(以 10 为底)对数( log10(x) )

基础定义

double      log10 ( double arg );

log10
log10f
log10l

图像
在这里插入图片描述

6. 给定数值的以 2 为底的对数( log2(x) )

基础定义

double      log2 ( double arg );

log2
log2f
log2l

图像
在这里插入图片描述

7. 加上给定数值的自然(以 e 为底)对数( ln(1+x) )

基础定义

double      log1p ( double arg );

log1p
log1pf
log1pl

图像
在这里插入图片描述

3. 幂函数

1. 求某数的给定次幂( xy

基础定义

double      pow ( double base, double exp );

pow
powf
powl

2. 计算平方根( √x )

基础定义

double      sqrt ( double arg );

sqrt
sqrtf
sqrtl

3. 计算立方根( 3√x )

基础定义

double      cbrt ( double arg );

cbrt
cbrtf
cbrtl

4. 计算两个给定数的平方和的平方根( √x2+y2

基础定义

double      hypot ( double x, double y );

hypot
hypotf
hypotl

4. 三角函数

1. 计算正弦( sin(x) )

基础定义

double      sin ( double arg );

sin
sinf
sinl

图像
在这里插入图片描述

2. 计算余弦( cos(x) )

基础定义

double      cos ( double arg );

cos
cosf
cosl

图像
在这里插入图片描述

3. 计算正切( tan(x) )

基础定义

double      tan ( double arg );

tan
tanf
tanl

图像
在这里插入图片描述

4. 计算反正弦( arcsin(x) )

基础定义

double      asin ( double arg );

asin
asinf
asinl

图像
在这里插入图片描述

5. 计算反余弦( arccos(x) )

基础定义

double      acos ( double arg );

acos
acosf
acosl

图像
在这里在这里插入图片描述
插入图片描述

6. 计算反正切( arctan(x) )

基础定义

double      atan ( double arg );

atan
atanf
atanl

图像
在这里插入图片描述

7. 反正切,用符号确定象限

基础定义

double      atan2 ( double y, double x );

atan2
atan2f
atan2l

5. 双曲函数

1. 计算双曲正弦( sinh(x) )

基础定义

double      sinh ( double arg );

sinh
sinhf
sinhl

图像
在这里插入图片描述

2. 计算双曲余弦( cosh(x) )

基础定义

double      cosh ( double arg );

cosh
coshf
coshl

图像
在这里插入图片描述

3. 计算双曲正切( tanh(x) )

基础定义

double      tanh ( double arg );

tanh
tanhf
tanhl

图像
在这里插入图片描述

4. 计算反双曲正弦( arsinh(x) )

基础定义

double      asinh ( double arg );

asinh
asinhf
asinhl

图像
在这里插入图片描述

5. 计算反双曲余弦( arcosh(x) )

基础定义

double      acosh ( double arg );

acosh
acoshf
acoshl

图像
在这里插入图片描述

6. 计算反双曲正切( artanh(x) )

基础定义

double      atanh ( double arg );

atanh
atanhf
atanhl

图像
在这里插入图片描述

6. 误差与伽马函数

1. 误差函数

erf
erff
erfl

2. 补误差函数

erfc
erfcf
erfcl

3. gamma 函数

tgamma
tgammaf
tgammal

4. gamma 函数的自然对数

lgamma
lgammaf
lgammal

7. 最接近整数的浮点运算

1. 不小于给定值的最接近整数值

基础定义:计算不小于 arg 的最小整数值。

double      ceil ( double arg );

ceil
ceilf
ceill
在这里插入图片描述

#include <cmath>
#include <iostream>
int main()
{std::cout << std::fixed<< "floor(+2.7) = " << std::floor(+2.7) << '\n'<< "floor(-2.7) = " << std::floor(-2.7) << '\n'<< "floor(-0.0) = " << std::floor(-0.0) << '\n'<< "floor(-Inf) = " << std::floor(-INFINITY) << '\n';
}//输出:
floor(+2.7) = 2.000000
floor(-2.7) = -3.000000
floor(-0.0) = -0.000000
floor(-Inf) = -inf

2. 不大于给定值的最接近整数

基础定义:计算不大于 arg 的最大整数值。
在这里插入图片描述

#include <cmath>
#include <iostream>
int main()
{std::cout << std::fixed<< "floor(+2.7) = " << std::floor(+2.7) << '\n'<< "floor(-2.7) = " << std::floor(-2.7) << '\n'<< "floor(-0.0) = " << std::floor(-0.0) << '\n'<< "floor(-Inf) = " << std::floor(-INFINITY) << '\n';
}//输出:
floor(+2.7) = 2.000000
floor(-2.7) = -3.000000
floor(-0.0) = -0.000000
floor(-Inf) = -inf

3. 绝对值不大于给定值的最接近整数

基础定义:计算绝对值不大于 arg 的最接近整数。
在这里插入图片描述

#include <cmath>
#include <iostream>
int main()
{std::cout << std::fixed<< "trunc(+2.7) = " << std::trunc(+2.7) << '\n'<< "trunc(-2.9) = " << std::trunc(-2.9) << '\n'<< "trunc(-0.0) = " << std::trunc(-0.0) << '\n'<< "trunc(-Inf) = " << std::trunc(-INFINITY) << '\n';
}// 可能的输出:
trunc(+2.7) = 2.000000
trunc(-2.9) = -2.000000
trunc(-0.0) = -0.000000
trunc(-Inf) = -inf

4. 最接近整数,中间情况下向远离零舍入

基础定义:计算 arg 的最接近整数值(以浮点格式),中点情况舍入为远离零,无关乎当前舍入模式。 计算 arg 的最接近整数值(以整数格式),中点情况舍入为远离零,无关乎当前舍入模式。
在这里插入图片描述

#include <iostream>
#include <cmath>
#include <cfenv>
#include <climits>#pragma STDC FENV_ACCESS ONint main()
{// roundstd::cout << "round(+2.3) = " << std::round(2.3)<< "  round(+2.5) = " << std::round(2.5)<< "  round(+2.7) = " << std::round(2.7) << '\n'<< "round(-2.3) = " << std::round(-2.3)<< "  round(-2.5) = " << std::round(-2.5)<< "  round(-2.7) = " << std::round(-2.7) << '\n';std::cout << "round(-0.0) = " << std::round(-0.0)  << '\n'<< "round(-Inf) = " << std::round(-INFINITY) << '\n';// lroundstd::cout << "lround(+2.3) = " << std::lround(2.3)<< "  lround(+2.5) = " << std::lround(2.5)<< "  lround(+2.7) = " << std::lround(2.7) << '\n'<< "lround(-2.3) = " << std::lround(-2.3)<< "  lround(-2.5) = " << std::lround(-2.5)<< "  lround(-2.7) = " << std::lround(-2.7) << '\n';std::cout << "lround(-0.0) = " << std::lround(-0.0)  << '\n'<< "lround(-Inf) = " << std::lround(-INFINITY) << '\n';// 错误处理std::feclearexcept(FE_ALL_EXCEPT);std::cout << "std::lround(LONG_MAX+1.5) = "<< std::lround(LONG_MAX+1.5) << '\n';if (std::fetestexcept(FE_INVALID))std::cout << "    FE_INVALID was raised\n";
}//可能的输出:
round(+2.3) = 2  round(+2.5) = 3  round(+2.7) = 3
round(-2.3) = -2  round(-2.5) = -3  round(-2.7) = -3
round(-0.0) = -0
round(-Inf) = -inf
lround(+2.3) = 2  lround(+2.5) = 3  lround(+2.7) = 3
lround(-2.3) = -2  lround(-2.5) = -3  lround(-2.7) = -3
lround(-0.0) = 0
lround(-Inf) = -9223372036854775808
std::lround(LONG_MAX+1.5) = -9223372036854775808FE_INVALID was raised

5. 使用当前舍入模式的最接近整数

6. 使用当前舍入模式的最接近整数

若结果有别则有异常

8. 浮点操作函数

9. 分类与比较

函数名功能
fpclassify( double arg )归类给定的浮点值,就是分类到 宏常量-分类里面的数据。
isfinite( double arg )检查给定数是否拥有有限值
isinf ( double arg )检查给定数是否为无限
isnan( double arg )检查给定的数是否 NaN
isnormal( double arg )检查给定数是否正规
signbit ( double arg )检查给定数是否为负
isgreater (double x, double y)检查第一个浮点实参是否大于第二个,其实就类似 ‘>’ 功能
isgreaterequal(double x, double y)检查第一个浮点实参是否大于或等于第二个 ,其实就类似于 ‘>=’ 功能
isless(double x, double y)检查第一个浮点实参是否小于第二个,其实就类似 ‘<’ 功能
islessequal(double x, double y)检查第一个浮点实参是否小于或等于第二个,其实就类似 ‘<=’ 功能
islessgreater(double x, double y)检查第一个浮点实参是否小于或大于第二个,类似 x < y || x > y 功能
isunordered(double x, double y)检查两个浮点值是否无顺序,若 x 或 y 为 NaN 则为 true

三、宏常量

1. 常规

2. 分类

下面的几个宏参数:FP_NORMAL 、 FP_SUBNORMAL 、 FP_ZERO 、 FP_INFINITE 、 FP_NAN 宏各代表一个独自的浮点数类别。也就是说一个浮点数的值的类别应该只会在下面的表格中的一种。这些宏都是整数类型。

常量名解释说明
FP_NORMAL指示值为正规,即不是无穷大、非正规、非数或零
FP_SUBNORMAL指示值为非正规
FP_ZERO指示值为正或负零
FP_INFINITE指示值无法以底层类型表示(正或负无穷大)
FP_NAN指示值是非数( NaN )

这里有一个专门的函数去分辨是那一类。1-3) 归类浮点值 arg 到下列类别中:零、非正规、正规、无穷大、 NaN 或实现定义类别。

int fpclassify( float arg );
int fpclassify( double arg );
int fpclassify( long double arg );
int fpclassify( IntegralType arg );

示例代码

#include <iostream>
#include <cmath>
#include <cfloat>const char* show_classification(double x) {switch(std::fpclassify(x)) {case FP_INFINITE:  return "Inf";case FP_NAN:       return "NaN";case FP_NORMAL:    return "normal";case FP_SUBNORMAL: return "subnormal";case FP_ZERO:      return "zero";default:           return "unknown";}
}
int main()
{std::cout << "1.0/0.0 is " << show_classification(1/0.0) << '\n'<< "0.0/0.0 is " << show_classification(0.0/0.0) << '\n'<< "DBL_MIN/2 is " << show_classification(DBL_MIN/2) << '\n'<< "-0.0 is " << show_classification(-0.0) << '\n'<< "1.0 is " << show_classification(1.0) << '\n';
}//输出:
1.0/0.0 is Inf
0.0/0.0 is NaN
DBL_MIN/2 is subnormal
-0.0 is zero
1.0 is normal

四、错误处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Grafana loki配置, 无脑版

使用docker部署Grafana loki 1.创建 docker-compose.yml 文件 touch docker-compose.yml写入以下内容 vim touch docker-compose.yml version: "3"networks:loki:services:loki:image: grafana/loki:latestrestart: unless-stoppedports:- "3100:3100"vo…

LeetCode 14.最长公共前缀(python版)

需求 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff1a;strs [“dog”,“race…

【高效开发工具系列】Intellj IDEA 2023.3 版本

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

curl命令导致你下载的文件为空原因分析

文章目录 1.前言2. 通过curl -O 下载远端文件2.1 执行curl -O下载远端文件2.2 通过curl -v 查看详细的请求和响应的信息 3.通过在curl -O 中增加 -L 参数保证curl能够自动跟踪和请求远端返回的重定向地址4.结论 1.前言 最近在进行线上项目调试的过程中需要安装调试工具&#xf…

HubSpot能不能对接微信公众号?

在当今数字化时代&#xff0c;企业的数字化营销策略不可或缺。其中&#xff0c;HubSpot作为一体化营销平台&#xff0c;是否能与国内最大的社交平台之一——微信公众号进行无缝对接&#xff0c;成为业界关注的焦点。今天运营坛将深入探讨HubSpot与微信公众号的对接流程、Messag…

【华为 ICT HCIA eNSP 习题汇总】——题目集6

1、IEEE 802.11g 标准支持的最大协商速率为&#xff08;&#xff09;。 A、300Mbps B、150Mbps C、54Mbps D、1200Mbps 考点&#xff1a;无线局域网 解析&#xff1a;&#xff08;C&#xff09; IEEE 802.11系列标准如下表&#xff1a; 标准数据传输速率主要技术IEEE 802.111M…

【网站项目】医院管理系统源码(有源码)

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板,帮助书写开题报告。作者完整代码目录供你选择: 《Springboot网站项目…

『OpenCV-Python鼠标画笔』

OpenCV-Python教程链接&#xff1a; https://opencv-python-tutorials.readthedocs.io/ 示例一&#xff1a;图片上双击的位置绘制一个圆圈 首先创建一个鼠标事件回调函数&#xff0c;鼠标事件发生时就会被执行。鼠标事件可以是鼠标上的任何动作&#xff0c;比如左键按下&#x…

论述Python中列表、元组、字典和集合的概念

Python列表是用于存储任意数目、任意类型的数据集合&#xff0c;包含多个元素的有序连续的内存空间&#xff0c;是内置可变序列&#xff0c;或者说可以任意修改。在Python中&#xff0c;列表以方括号&#xff08;[ ]&#xff09;形式编写。 Python元组与Python列表类似&#x…

蓝桥杯官网填空题(01串的熵)

问题描述 答案提交 这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。 import java.util.*;public class Main {public static void main(String[] args) {for(double zero1;zero<2333…

[docker] Docker资源管理

一、docker资源控制 Docker通过Cgroup 来控制容器使用的资源配额&#xff0c;包括CPU、内存、磁盘三大方面&#xff0c;基本覆盖了常见的资源配额和使用量控制。Caroup 是ControlGroups的缩写&#xff0c;是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如…

MyBatis详解(2)-- mybatis配置文件

MyBatis详解&#xff08;2&#xff09; mybatis配置文件 mybatis配置文件 1.构建SqlSessionFactory的依据。 2.MyBatis最为核心的内容&#xff0c;对MyBatis的使用影响很大。 3.配置文件的层次顺序不能颠倒&#xff0c;一旦颠倒会出现异常。 < c o n f i g u r a t i o n…

CC工具箱使用指南:【属性读取】

一、简介 假设有1个用地图层和1个区块图层&#xff08;里面包括1-6号地块&#xff09;&#xff0c;想要通过空间关系判断图地图层里的图斑分别位于区块图层的哪个地块内。 有1种简单的方法是空间连接&#xff0c;但是空间连接有1个很大的问题。 当用地图斑不完全位于某个地块…

Figma怎么设置中文,Figma有中文版吗?

不是很多人不想用 Figma&#xff0c;真是因为纯英文界面而头疼。这就是为什么有人会到处搜索 Figma 如何设置中文这样的问题。 然后我们直接快刀斩乱麻&#xff0c;Figma 没有中文版&#xff0c;但是我们还有其他的方法&#xff1a;例如&#xff0c; Figma 添加一个插件来解决…

在Windows 10/11中如何添加打印机?这里提供详细步骤

本文介绍如何将打印机添加到Windows10/11。有线设备和无线设备的过程不同。 在Windows 10中添加打印机 将网络打印机添加到Windows 10 网络打印机通过本地网络连接,如蓝牙或Wi-Fi。连接到打印机之前,请打开打印机并将其连接到网络。 注意:你可能需要管理员的许可才能安装…

grid布局,flex布局实现类似响应式布局的效果

一. grid布局 实现代码 <!DOCTYPE html> <html lang"en"><head><style>.box {display: grid;grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /*自动填充&#xff0c;最小宽度300px*/justify-content: space-between;gap:…

yml配置文件怎么引用pom.xml中的属性

目录 前言配置测试 前言 配置文件中的一些参数有时要用到pom文件中的属性&#xff0c;做到pom文件变配置文件中也跟着变&#xff0c;那如何才能做到呢&#xff0c;下面咱们来一起探讨学习。 配置 1.首先要在pom.xml中做如下配置&#xff0c;让maven渲染src/main/resources下配…

推荐系统算法 协同过滤算法详解(二)皮尔森相关系数

目录 前言 协同过滤算法(简称CF) 皮尔森(pearson)相关系数公式 算法介绍 算法示例1&#xff1a; 算法示例2 前言 理解吧同胞们&#xff0c;实在是没办发把wps公式复制到文章上&#xff0c;只能截图了&#xff0c;我服了&#xff01;&#xff01;&#xff01; 协同过滤算法…

【进口控制器替代】基于Zynq-7020 FPGA的NI 8槽CompactRIO控制器

667 MHz双核CPU&#xff0c;512 MB DRAM&#xff0c;1 GB存储容量&#xff0c;Zynq-7020 FPGA&#xff0c;更宽工作温度范围&#xff0c;8槽CompactRIO控制器 cRIO-9068是一款坚固耐用的无风扇嵌入式控制器&#xff0c;可用于高级控制和监测应用。这款软件设计控制器搭载FPGA、…

c++的第一天

思维导图 输入一个字符串&#xff0c;计算大小写&#xff0c;数字&#xff0c;空格和其他字符 #include <array> #include <string>using namespace std;int main() {string str;cout << "请输入一串包含大写小写数字和空格的字符串:" ;getline(c…