use*_*567 5 python java curve algebra nan
我正在尝试将此曲线作为我正在进行的小型游戏的练级系统的一部分.等式如下
f(x) = -e^-((-log(7)/100)*(100-x))+7
Run Code Online (Sandbox Code Playgroud)
在python中可以定义为
f=lambda x:-e**-((-log(7)/100.0)*(100-x))+7
Run Code Online (Sandbox Code Playgroud)
在Python控制台中运行此函数将返回预期的值.我把它移植到Java,它的形式为:
public static double f(float x) {
return (Math.pow(-Math.E, -((-Math.log(7)/100)*(100-x)))+7);
}
Run Code Online (Sandbox Code Playgroud)
然而,神秘地,这总是回归NaN.我以前从未遇到过这个问题,发生了什么事?
(把我的评论作为答案)
表达方式不一样.在python中它看起来像-(e**someNum).在java中它看起来像(-e)**someNum.
想一想(以一种非常原始的方式),当你将负数多次无理解时,你会得到什么.这就是为什么你得到一个NaN.
你想要的Java是这样的:
public static double f(float x) {
return 7 - Math.pow(Math.E, -((-Math.log(7)/100)*(100-x)));
}
Run Code Online (Sandbox Code Playgroud)