Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数学方程出发_Java_Double_Nan - Fatal编程技术网

Java 从数学方程出发

Java 从数学方程出发,java,double,nan,Java,Double,Nan,嗨,我在一段java代码中有以下等式: double z = 0.002378 * (Math.pow((1 - (Math.pow(6.875, -6) * y)), 4.2561)); 当我将y设置为非常大的值时,即200000我得到Nan(不是一个数字),它在稍低的值下工作正常,130000 有人能告诉我为什么吗 此外,我还尝试从原始BASIC程序移植上述代码: .002378*(1-(6.875*10^-6*ALT))^4.2561 我可能做错了?基本代码中的操作顺序不是很明确 感谢

嗨,我在一段java代码中有以下等式:

double z = 0.002378 * (Math.pow((1 - (Math.pow(6.875, -6) * y)), 4.2561));
当我将y设置为非常大的值时,即
200000
我得到
Nan
(不是一个数字),它在稍低的值下工作正常,
130000

有人能告诉我为什么吗

此外,我还尝试从原始BASIC程序移植上述代码:

.002378*(1-(6.875*10^-6*ALT))^4.2561
我可能做错了?基本代码中的操作顺序不是很明确

感谢

解释如下:

如果第一个参数是有限的且小于零[…并且]第二个参数是有限的且不是整数,则结果为NaN

因此,只要你的
y
足够好,以至于
1-(Math.pow(6.875,-6)*y
为负值,你就会得到NaN

(这是有意义的,当你考虑基础数学。一个非整数幂的负数不是实数,而<代码>双< /代码>无法表示复数。)


为更新的问题编辑:

您的基本代码为
6.875*10^-6
(表示6.875×10−6) ,但是您的Java代码有
Math.pow(6.875,-6)
(意思是6.875−6) ,这是一个稍大的值,因此您的Java代码会触发此问题,因为
y
的值稍小。这可能就是您现在看到此问题的原因。要匹配基本代码,您应该将
Math.pow(6.875,-6)
更改为
6.875e-6
,如下所述:

如果第一个参数是有限的且小于零[…并且]第二个参数是有限的且不是整数,则结果为NaN

因此,只要你的
y
足够好,以至于
1-(Math.pow(6.875,-6)*y
为负值,你就会得到NaN

(这是有意义的,当你考虑基础数学。一个非整数幂的负数不是实数,而<代码>双< /代码>无法表示复数。)


为更新的问题编辑:


您的基本代码为
6.875*10^-6
(表示6.875×10−6) ,但是您的Java代码有
Math.pow(6.875,-6)
(意思是6.875−6) ,这是一个稍大的值,因此您的Java代码触发此问题的原因是
y
的值稍小。这可能就是您现在看到此问题的原因。要匹配基本代码,您应该更改
Math.pow(6.875,-6)
to
6.875e-6

在复数数学中,将负数提升为非整数次幂会产生一个虚数,在Java算术中是一个NaN。如果您确实需要进行该计算,则需要一个复数包。但是,更可能的情况是,您的等式中存在错误或您正试图使用它超出其有效范围。

将负数提高为非整数幂会导致复数数学中的虚数,Java算术中的NaN。如果确实需要进行该计算,则需要一个复数包。但是,更可能的情况是,等式中存在错误,或者您正试图将其用于超出其有效范围。

负数加实数幂可能得到NAN

负数加实数幂可能得到NAN

你知道
^
是逻辑异或,而不是幂函数?你可能在寻找
数学.pow()
方法。该代码甚至不会编译。请发布您的真实代码。这不是java代码,我使用标准数学符号编写了方程添加了实际代码OK,您应该检查
Math.pow
(并了解是什么情况导致它返回
NaN
):。你知道
^
是逻辑异或,而不是幂函数吗?你可能在寻找
数学.pow()
方法。该代码甚至不会编译。请发布您的真实代码。这不是java代码,我使用标准数学符号编写了方程添加了实际代码OK,您应该检查
Math.pow
(并了解是什么情况导致它返回
NaN
):。它似乎有一个140000左右的最大限制,但我想这是等式的一个限制,我的实现不再有问题。希望它的最大限制是140000左右,但我想这是等式的一个限制,我的实现不再有问题。希望如此