对于以下代码行:
for (int i = 1; i <= var; i++) {
double inc = (14.0) - double(ceil(log10(i)))};
我一直收到错误
Overloading ambiguity between "std::log10(double)" and "std::log10(float)"
我还尝试过投放inc
和ceil(log10(i))
以使其无效。思考?
答案 0 :(得分:2)
是什么让您认为投射inc
或ceil
会有所帮助?编译器告诉您它无法确定您是否需要log10(float)
或log10(double)
。你需要向编译器明确说明
double inc = (14.0) - double(ceil(log10((float)i)));
或
double inc = (14.0) - double(ceil(log10((double)i)));
答案 1 :(得分:1)
Overloading ambiguity between "`std::log10(double)`" and "`std::log10(float)`"
^^^^^^ ^^^^^
正如@ John3136评论的那样,错误是指log10
函数的输入。在这种情况下,i
变量是int
类型。由于int
既不是float
也不是double
,并且两种转换同样可行,编译器不知道选择哪个。因此,您必须明确选择一个。例如:
std::log10(static_cast<float>(i));