Java 我能';t截断要比较的数字

Java 我能';t截断要比较的数字,java,Java,我需要比较十进制类型的数字,其中比较将构成十进制数字3,但与我的代码,它不能做到这一点 我也试过,但也没有成功 代码如下: 数字比较= -3.1756-3.175这是事实 3.174;3.175这是错误的 公共静态布尔值等于三位小数(双1,双2) int a = (int) Math.floor(one*1000); int b = (int) Math.floor((two*1000)); if(a == b){ System.out.println(true);

我需要比较十进制类型的数字,其中比较将构成十进制数字3,但与我的代码,它不能做到这一点

我也试过,但也没有成功 代码如下:

数字比较=

-3.1756-3.175这是事实

3.174;3.175这是错误的


公共静态布尔值等于三位小数(双1,双2)
int a = (int) Math.floor(one*1000);
int b = (int) Math.floor((two*1000));

    if(a == b){
        System.out.println(true);
        System.out.println(a + "---" + b);
        return true;
    }
    else

        System.out.println(false);
    System.out.println(a + "---" + b);
    return false;

因为您使用的是
floor()
,所以您不仅仅是在小数点后截断。您将移动到下一个较小的整数。因为这里处理的是负数,
floor(-3.1756)
意外地变成了-3176(不是-3175!)。因此,这两个数字并不相等

因此,要进行截断,必须对负数使用
ceil()

int a = (int) (one < 0 ? Math.ceil(one * 1000) : Math.floor(one*1000));
int b = (int) (two < 0 ? Math.ceil(two * 1000) : Math.floor(two*1000));
inta=(int)(一个<0?Math.ceil(一个*1000):Math.floor(一个*1000));
intb=(int)(两个<0的数学单元(两个*1000):数学层(两个*1000));

另一种选择可能是对尊重.DOWN的函数使用舍入。

请展示您的整个函数,并给出输入示例,您的函数将返回您不期望的结果。我刚刚添加了完整的代码,但正如我所说,我想买两个小数点后三位的数字,在出版物中我还留下了两个例子,一个是真的,另一个是假的,你在截断,不是吗rounding@MadPhysicist我想这就是他想要的。这两个例子看起来都像是预期的结果。3.174 != 3.175至小数点后三位。