如下语句:
double Value = 15.3;
double lowTick = pow(10,floor(log10(Value)));
double highTick = pow(10,floor(log10(Value*10)));
使用VS2003进行编译时,提示如下错误:
e:\code\GMP\TestView.cpp(104) : error C2666: “pow” : 7 个重载有相似的转换
d:\Program Files\VS2003\Vc7\include\math.h(620): 可能是“long double pow(long double,int)”
d:\Program Files\VS2003\Vc7\include\math.h(618): 或 “long double pow(long double,long double)”
d:\Program Files\VS2003\Vc7\include\math.h(572): 或 “float pow(float,int)”
d:\Program Files\VS2003\Vc7\include\math.h(570): 或 “float pow(float,float)”
d:\Program Files\VS2003\Vc7\include\math.h(534): 或 “double pow(int,int)”
d:\Program Files\VS2003\Vc7\include\math.h(532): 或 “double pow(double,int)”
d:\Program Files\VS2003\Vc7\include\math.h(195): 或 “double pow(double,double)”
试图匹配参数列表“(int, double)”时
解决办法,进行强制类型转换,将常量数据10转换为程序中数据变量相同的类型,如下所示:
double lowTick = pow((double)10,floor(log10(Value)));
double highTick = pow((double)10,floor(log10(Value*10)));