当前位置: 首页 > 知识库问答 >
问题:

比较Java中的两个double值

慎志国
2023-03-14

这是一个Java代码,应该测试小数点后的前三位是否相同。而我需要编写这个程序没有一个主方法。

java prettyprint-override">public class areEqualByThreeDecimalPlaces {
    public static boolean areEqualByThreeDecimalPlaces(double d_1, double d_2) {
        double value_1 = Math.round(1000*d_1);
        double value_2 = Math.round(1000*d_2);

        if (value_1 == value_2) {
            return true;
        } else return false;
    }
}
(-3.1756, -3.175)
true
false

共有1个答案

狄法
2023-03-14

离开这段代码,这两个值就不相等了。值_1=-3176.0值_2=-3175.0

如果你想学习更多关于截断双打的知识,看一下这个。如何在Java中将double截断到小数点后两位?

 类似资料:
  • 问题内容: Java中两个double值的简单比较会产生一些问题。让我们考虑以下Java中的简单代码段。 上面的代码似乎返回,表达式的求值,但是没有。它之所以返回,是因为该表达式的求值实际上是预期的因此不等于,因此条件的求值为。解决这种情况的最佳建议方法是什么? 问题答案: 基本上,你不应该进行精确比较,而应该执行以下操作:

  • 在一个JUnit4测试中,我有一个方法,它返回一个对象,我要将它与引用列表进行比较。到目前为止,我发现的最佳解决方案是使用和,如下所示: 对于只返回很少值的测试来说,这是很好的。但是如果一个测试返回更多的值,这肯定不是最好的方法。 我还尝试了下面的代码。要编译代码,需要在之前向下转换到: 对比失败了,不明白为什么: java.lang.AssertionError:预期:(包含<[<0.2>的<1

  • 问题内容: 我需要在Java中比较两个日期。我正在使用这样的代码: 这是行不通的。变量的内容如下: 包含 包含 我该如何解决? 问题答案: 日期相等性取决于两个等于毫秒的日期。使用创建新的Date对象将永远不会等于过去创建的日期。Joda Time 的API简化了日期的处理。但是,仅使用Java的SDK:

  • 问题内容: 在Java中,我想比较两个地图,如下所示,我们是否有现有的API可以做到这一点? 谢谢 问题答案: 我将使用Set的removeAll()功能来设置键的差异,以查找添加和删除的内容。可以通过使用设置为HashMap的条目进行设置差异来检测实际更改。Entry同时使用键和值实现equals()。 输出量

  • 问题内容: 给出测试代码: 我想检查两个给定的枚举是否包含相同的值。 也许有更优雅的方式做到这一点? 问题答案: 建立一组名称: 为此(考虑将以上内容提取到方法中)。 然后:

  • 我得到了两个字符串类型arraylist。一个列表包含“book1”、“book2”、“book3”和“book4”。另一个arrayList包含“book1”、“book2”、“book3”。因此,第一个列表的大小为4,第二个列表的大小为3。我创建了另一个与第一个列表大小相等的arrayList 但是当我这样做的时候,我不能设置1,因为我不能进入if状态,有人能帮我吗