我';我在Java中使用三角函数方法时得到的值不正确?

我';我在Java中使用三角函数方法时得到的值不正确?,java,pi,trigonometry,Java,Pi,Trigonometry,我只是在我的Java类中尝试一些方法,我完全按照书中的例子来做。然而,当我取π/2的余弦时,得到的值是6.123233995736766E-17,这显然是不正确的(答案应该是0)。为什么我会得到这个值?我的代码有问题吗 import java.util.*; public class JavaPractice { public static void main(String[] args) { double num = Math.cos(Math.PI / 2); Syst

我只是在我的Java类中尝试一些方法,我完全按照书中的例子来做。然而,当我取π/2的余弦时,得到的值是6.123233995736766E-17,这显然是不正确的(答案应该是0)。为什么我会得到这个值?我的代码有问题吗

import java.util.*;

public class JavaPractice {
  public static void main(String[] args) {
    double num = Math.cos(Math.PI / 2);
    System.out.print(num);
  }
}

PI的精确值无法存储(因为它是无理的,并且会一直持续下去),所以Java使用近似值。因此,PI/2也不是精确的,所以你要取一个几乎等于PI/2的值的余弦。你会注意到答案非常接近于0。你的代码没有问题

PI的精确值无法存储(因为它是无理的,并且永远都在继续),所以Java使用近似值。因此,PI/2也不是精确的,所以你要取一个几乎等于PI/2的值的余弦。你会注意到答案非常接近于0。你的代码没有问题

进一步说明这个答案。想象一下
delta=Pi-Math.Pi
(使用
Pi
真实值)您实际计算的是
cos((Pi-delta)/2)=sin(delta/2)~delta/2
,以进一步了解这个答案。想象一下
delta=Pi-Math.Pi
(使用
Pi
真实值)实际计算的是
cos((Pi-delta)/2)=sin(delta/2)~delta/2