4

几天来我一直在为这个问题苦苦挣扎,所以经过大量谷歌搜索后,我决定在这里问。

无论如何,我需要使用该Math.tan()方法,但它并不能真正按我的意愿工作。因为如果我设置了一个双变量:double i = opposite/adjacent然后使用该Math.tan()方法,它只会返回 0.0!例如:

double i = 480/640;
System.out.println(Math.tan(i));

但它仍然返回零!我读到该Math.tan()方法仅返回“弧度”值。但正因为如此,它不应该返回零?还是我错了?我知道如果我使用一个真正的计算器并做 tan(480/640) 它会返回我想要的。

所以我希望有人理解我并愿意帮助我!提前致谢!(顺便说一句,我很抱歉英语不好)

4

4 回答 4

5

int计算中,480/6400。所以iwill 的结果是0.0

你需要写double i = 480.0/640;(至少有一个数字必须写为 a double)。

你也可以写:double a = 480, b = 640;然后如果你写double i = a/b;,你会得到很好的结果。

于 2013-02-16T08:13:02.023 回答
3

当您在没有强制转换的情况下进行数学运算时,Java 将首先隐式地生成文字整数 - 在您的情况下,这确实会导致 0。

在进行数学运算之前先转换值,就可以了:

    double i = 480D/640D;
    System.out.println(i);

或者

    double i = (double)480/(double)640;
    System.out.println(i);

或者

    double numerator = 480;
    double denominator = 640;
    double i = numerator / denominator;
    System.out.println(i);
于 2013-02-16T08:12:44.973 回答
1

double i = 480.0/640.0;480/640理解为整数除法,所以给0

于 2013-02-16T08:07:25.507 回答
1

在某一方面的变化

双 i = (双) 480/640;

于 2013-02-16T08:12:25.730 回答