我的函数收到一个浮点数,我尝试在出现问题之前捕获零,但它无效。它挂在这里:
exp = -math.ceil(math.log(v, 2))
def logfun(v):
if v < 0:
v = -v
if int(v) == 0:
exp = 0
if v >= 1:
exp = math.floor(math.log(v, 2))
if v < 1:
exp = -math.ceil(math.log(v, 2))
return(exp)
logfun(0.0)
ValueError:数学域错误
答案 0 :(得分:0)
你写道:
if v < 1:
exp = -math.ceil(math.log(v, 2))
这意味着如果v
是0
,那么这个正文将会触发。由于它不是elif
,因此不会产生太大影响。
您可以elif
使用return 0
,或int(v) == 0
def logfun(v):
if v < 0:
v = -v
if int(v) == 0:
return 0
if v >= 1:
return math.floor(math.log(v, 2))
if v < 1:
return -math.ceil(math.log(v, 2))
,例如:
v < 1
话虽如此,如果int(v) == 0
,则表示此处为def logfun(v):
if v < 0:
v = -v
if int(v) == 0:
return 0
else:
return math.floor(math.log(v, 2))
,因此您可以省略该案例。成功:
wvChat.setWebViewClient(new WebViewClient() {
@Override
public void onPageCommitVisible(WebView view, String url) {
wvChat.pageDown(true);
}
});