0

Java 中有没有办法做到这一点,如果 X 在 Y 的 3 以内,那它就是真的(需要一个 if 语句)。我试过:

    import java.util.*;
    import java.io.*;

    public class e4 {
public static void main (String arg[])  {
    if ( ( (x - 3) <= y ) || ( (x - 3) <= y) || (x >= (y -3) ) || (x >= (y -3) ))
    {
    System.out.println("Your are within 3 of each other!");
    }
    else
        {
        System.out.println("Your NOT within 3 of each other."); 
        }  

        } //end main
        } //end class

非常感谢您的帮助!

4

2 回答 2

4

使用更简单的东西:

if (Math.abs(x - y) < 3.0) {
    // within 3
}
于 2013-10-29T22:08:50.127 回答
0

你不需要Math.abs。做这个。

if ( x >= y - 3 && x <= y + 3 )

这是一个Math.abs给您错误答案的情况,因为减法会从小浮点数中丢失少量。如果准确性对您很重要,您应该避免使用Math.abs这个原因。

请注意,可以编造一个示例,其中我的解决方案会发生类似的事情;但是这样的例子很少,它们只发生在由 表示xy包含相差超过 3 的部分和相差小于 3 的部分的“范围”中。

    float x = - 0.2500001f;
    float y = 2.75f;
    System.out.println( x >= y - 3 && x <= y + 3 );   // Prints false (correct)
    System.out.println( Math.abs(x-y) <= 3.0);        // Prints true (wrong)
于 2013-10-29T22:10:09.940 回答