• excel在办公中运用比较多，但是用函数，特别是IF函数那是特别少。接到一个任务，需要输出毛利率，已知列有 进货价和毛重。需要根据不同价格区间 不同重量算出不同毛利率。具体如下表： 进货价 重量与毛利率...
excel在办公中运用的比较多，但是用函数，特别是IF函数那是特别的少。接到一个任务，需要输出毛利率，已知的列有 进货价和毛重。需要根据不同价格区间 不同重量算出不同的毛利率。具体如下表：进货价  重量与毛利率的关系 重量  小于等于重量的毛利率  大于重量的毛利率 X <=150  500  20%  19% 150 < X  =<200  800  18%  17% 200 < X  =<250  900  16%  15% 250 < X  =<700  1000  14%  13% 700 < X  =<950  1100  12%  11% 950 < X  =<1023  1200  10%  9% 1023 < X  =<1920  1300  10%  8% 1920 < X  =<2366  1400  8%  7% 2366 < X  =<3500  1500  7%  4% 3500 < X  =<5000  1600  6%  4% 5000 < X  =<5800  1600  5%  4% 5800 < X  不校验  4% 拿到就霹雳吧啦的写下了一段IF函数=IF(A2<=150,IF(B2<=500,0.2,0.19),(IF(150<A2<200,IF(B2<800,0.18,0.17),(IF(200<A2<=250,IF(B2<900,0.16,0.15),(IF(250<A2<700,IF(B2<1000,0.14,0.13),(IF(700<A2<950,IF(B2<1100,0.12,0.11),(IF(950<A2<1023,IF(B2<1200,0.10,0.09),(IF(1023<A2<1920,IF(B2<1300,0.10,0.08),(IF(1920<A2<2366,IF(B2<1400,0.08,0.07),(IF(2366<A2<3500,IF(B2<1500,0.07,0.04),(IF(3500<A2<5000,IF(B2<1600,0.06,0.04),(IF(5000<A2<5800,IF(B2<1600,0.05,0.04),0.04)))))))))))))))))))))算出来的结果傻眼了。怎么价格大于150的毛利率都是0.04呢？？？深思一下原因，原来IF中的条件不能采用 5000<A2<5800 这种格式，正确的格式是"=AND(A2>50,A2<=500)"或者把上述的IF改写为：=IF(A2<=150,IF(B2<=500,0.2,0.19),(IF(A2<200,IF(B2<800,0.18,0.17),(IF(A2<=250,IF(B2<900,0.16,0.15),(IF(A2<700,IF(B2<1000,0.14,0.13),(IF(A2<950,IF(B2<1100,0.12,0.11),(IF(A2<1023,IF(B2<1200,0.10,0.09),(IF(A2<1920,IF(B2<1300,0.10,0.08),(IF(A2<2366,IF(B2<1400,0.08,0.07),(IF(A2<3500,IF(B2<1500,0.07,0.04),(IF(A2<5000,IF(B2<1600,0.06,0.04),(IF(A2<5800,IF(B2<1600,0.05,0.04),0.04)))))))))))))))))))))也是可以的。
展开全文
• 1、使用arguments.callee，arguments.callee 是一个指向正在执行的函数的指针，可以用它来实现对函数的递归调用。 function factorial(num){ if(num){ return 1; }else{ return num*arguments.callee(num-1);
1、使用arguments.callee，arguments.callee 是一个指向正在执行的函数的指针，可以用它来实现对函数的递归调用。
function factorial(num){
if(num<=1){
return 1;
}else{
return num*arguments.callee(num-1);
}
}

但是！在严格模式下，使用arguments.callee会导致错误。所以我们换第二种方法实现：

2.创建一个命名函数表达式
var factorial = (function f(num){
if(num<=1){
return 1;
}
else{
return num*f(num-1);
}
})
这样在严格和非严格模式下都行得通。
展开全文
• 范例如下：（来源网络）  ALTER FUNCTION fn_ab  (  @db VARCHAR(1)  )  RETURNS @r TABLE(col1 INT, ......) --定义返回表结构  AS ... IF (@db='1')  INSERT @r SELECT * FROM A  ...
范例如下：（来源网络）
ALTER FUNCTION fn_ab
(
@db VARCHAR(1)
)
RETURNS @r TABLE(col1 INT, ......) --定义返回的表结构
AS
BEGIN
IF (@db='1')
INSERT @r SELECT * FROM A
IF (@db='2')
INSERT @r SELECT * FROM B
RETURN
END
GO

------------------------------------------------------------------
[Python,SQL,ETL]交流群 164142295
展开全文
• #include"pch.h" #include<iostream> using namespace std; class A { public: A(int _X, int *_P) :x(_X),p(new int(*_P)) { cout << "构造函数" << endl;... if (this =...
#include"pch.h"
#include<iostream>

using namespace std;
class A
{
public:
A(int _X, int *_P) :x(_X),p(new int(*_P)) { cout << "构造函数" << endl; };
A(const A &a)
{
if (this == &a)
{
cout << "左值——拷贝构造函数" << endl;
*this = a;
}
else
{
x = a.x;
delete p;
p = new int(*a.p);
cout << "左值——拷贝构造函数" << endl;
}

}
A &operator=(const A &a)
{
if (this == &a)
{
cout << "自己赋值给自己" << endl;
return *this;
}
else
{
cout << "左值——赋值函数" << endl;
x = a.x;
*p = *a.p;//赋值的精髓——在于只赋值内容，不赋值指针；因为赋值的前提：是两个对象都已建立
return *this;
}

}

A(A &&a) //移动拷贝构造函数
{
x = a.x;
delete p;移动拷贝构造函数,
p = a.p;
a.p = nullptr;
cout << "右值——拷贝构造函数" << endl;
}
A &operator=(A &&a)//移动赋值函数
{
if (this == &a)
{
cout << "自己赋值给自己" << endl;
return *this;
}
else
{
cout << "右值——赋值函数" << endl;
x = a.x;
delete p;
p = a.p;
a.p = nullptr;
return *this;
}
}

~A()
{
delete p;
cout << "析构函数" << endl;
}
void show()
{
cout << "x=" << x << endl;
cout << "*p=" << *p << endl;
cout << "————————" << endl;
}

private:
int x;
int *p;
};
void show_1(A &&a)
{
a.show();
}
void show_1(A &a)
{
a.show();
}
int  g= 3;
int main()
{
int x = 2;
int y = 111;
A a(10,&x);
A b(60,&y);

A c = a;			//调用普通拷贝构造函数
A e(b);				//调用普通拷贝构造函数
c = c;				//调用左值赋值函数
A d = std::move(a); //调用移动拷贝构造函数
//移动拷贝构造函数，将a转移到d之后，对象a就失效了，这也是和普通的拷贝构造函数的区别；；
c = std::move(b);		//调用移动赋值函数
cout << "————————————" << endl;
//a.show();//这句会报错，因为
//b.show();
c.show();

show_1(std::move(a));
show_1(std::move(b));
show_1(std::move(c));
show_1(c);

//show_1(std::move(d));

}




展开全文
• 什么是存储过程 ...函数的普遍特性：模块化，封装，代码复用； 速度快，只有首次执行需经过编译和优化步骤，后续被调用可以直接执行，省去以上步骤； MySQL存储过程的创建 语法 CREATE PROCEDURE sp_name (
• 相信大家都会写并查集查找父亲的函数，然而今天下午，因为这个函数T了将近两个小时，期间换了各种姿势，都是T，最后才想到是查找函数出了问题，为什么呢，先来看看我开始写的函数： int find(int x) {  ...
• makeQRCode:async function(id){ var url=“127.0.0.1/moviedetail.html?id=”+id+"&developid=3"; const response = await QRCode.toDataURL... { if(imgData) { //let file = this.convertBase64UrlToBlob(imgDat
• function a(msg,callback){ if(callback){ sok.onclick = function(){callback();} } } function b(){ a('测试',function(){ alert('****'); }) }
• 方法 struct cmp { bool operator()(pair&amp;amp;amp;lt;int, int&amp;amp;amp;gt;&amp;amp;amp;amp; a, pair&amp;amp;amp;lt;... if (a.first == b.first) return a.sec
• int my_log(const char *format,...) { va_list args; FILE *fp; fp = fopen("/tmp/my_log","a+"); if(!fp) { fprintf(stderr,"fp is NULL\n"); return -1;
• 什么是存储过程 简单的说，就是一组SQL语句集，功能强大，可以实现一些比较复杂的...函数的普遍特性：模块化，封装，代码复用； 速度快，只有首次执行需经过编译和优化步骤，后续被调用可以直接执行，省去以上步骤；
• 回调参数用法：（用于一个窗体调用另一个窗体，并有参数返回） ... //定义关闭窗口后调用的函数   // 选择对象  protected function OnSelectObject(e:Event):void  {  if (callback !=null)  {
• 在mysql中实现select复杂查询时候，是可以使用if()判断来加入查询条件 项目中使用sql查询时候 例如： 在项目连接数据库我们会需要给sql语句注入查询条件值 select 字段1,字段2 from 表 where 字段1 = ?1 ...
• void USART2_IRQHandler(void) ... if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET) // 接收 中断  {  USART_ClearITPendingBit(USART2,USART_IT_RXNE); // U1RX_Clear_Intr_Status_Bit;
• strcmp函数的写法： #include #include int strcmp1(char* a, char* b) { for(;*a==*b;a++,b++) if(*a!='\0') return 0; return *a - *b; } main() { int l; char a[10]={"db"}; char b[10]={"cb"};
• Python 斐波那契数列 三种函数写法比较1、斐波那契数列 函数写法2、上例总结3、递归总结 1、斐波那契数列 函数写法 import datetime def fib1(n=35): a = 0 b = 1 for i in range(n-1): a, b = b, a + b ...
• 对于int类型数据使用qsort可以为： int a,b; int cmp(){  return a-b; } 而对于double类型 int a,b; if(a>b) return 1; if(a==b) return 0; else return -1; poj 2075 code #include #include #...
• 创建一函数，用来判断一个数字@n是否为3位数，并且根据@type来返回这个3位数百位数或十位数或个位数 B：百位数 S：十位数 G：个位数 其他情况则返回0 比如uf1(234,'b')返回2 */ CREATE FUNCTION uf1(@n int...
• 最近写程序经常需要在列表推导式中添加判断条件，有时候在lambda匿名函数中添加判断条件，或者有时候写程序写太长了，需要判断语句时候不想在写成多行了（显得很啰嗦），这些时候用了一下if elif else简化用法...
• function getElementsByClassName(classname) { if(document.getElementsByClassName) { return document.getElementsByClassName(classname); } var eleArr = document.getElementsByTagName('
• for (let i=0 ;i&lt;self.tooltipData.length;i++){//拿到数组去重   if (toolList.indexOf(self.tooltipData[i]) == -1) {  toolList.push(self.tooltipData[i]) ...
• ## 闰年函数或循环的写法及思路 1 做为初学者首先要确定你的需求（也就是你要干什么），分析用那种比较简单易懂，可以使自己能够快速的理解其中的意思。 2.对于复杂的函数或循环要反复练习以便达到孰能生巧的目的...
• long long power(long long a,long long n,long long Mod) { long long pow=1; long long p=a%Mod; while(n>0) { if(n&1) pow=(pow*p)%Mod; n>>=1; p=(p*p)%Mo

...