Java中的基本三角函数

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个回答

5
在int计算中,480/640的结果为0。因此,i的结果将为0.0。
您需要写成double i = 480.0/640;(其中至少有一个数字必须写成double)。
您还可以写成:double a = 480,b = 640;,然后如果您写double i = a/b;,您将得到良好的结果。

谢谢你!那不是我想到的第一件事,非常感谢你! :) - GuiceU

3

当你在Java中进行数学运算时,如果没有使用强制类型转换,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);

1

写下 double i = 480.0/640.0; 中的 480/640 被理解为整数除法,因此结果为0。


1

改变

double i = (double) 480/640;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接