vt.给出

BigDecimal a = ...;
BigDecimal b = ...;

下面的公式适用于ab中的all possible values吗?

if (a.compareTo(b) == 0)
    assert a.stripTrailingZeros().equals(b.stripTrailingZeros())
if (a.compareTo(b) != 0)
    assert !(a.stripTrailingZeros().equals(b.stripTrailingZeros()))

if (a.stripTrailingZeros().equals(b.stripTrailingZeros()))
    assert(a.compareTo(b) == 0)
if (!(a.stripTrailingZeros().equals(b.stripTrailingZeros())))
    assert(a.compareTo(b) != 0)

或者,在某种边缘情况下,上述断言并非都是真的?

推荐答案

请注意,如果产生的scale溢出,则stripTrailingZeros可以抛出ArithmeticException.例如:

new BigDecimal(
        new BigInteger("70"),
        Integer.MIN_VALUE
).stripTrailingZeros(); // tries to set the scale to Integer.MIN_VALUE - 1 but can't

除了这种情况,断言应该是真的,因 for each 数字只有一个唯一的BigDecimal表示,没有尾随的零.

Java相关问答推荐

int Array Stream System. out. print方法在打印Java8时在末尾添加% sign

如何在返回bigint []值的子查询中使用any?

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

蒙蒂霍尔比赛结果不正确

如何在ApachePOI中将图像添加到工作表的页眉?

多重延迟签名

WebSockets和Spring Boot安全性出现错误401

支持MySQL 5.6的最新Hibernate版本

使用正则表达式从字符串中提取多个值

在Frege中,我如何将一个字符串安全地转换为一个可能的Int?

如何在@CsvSource中传递空格作为值

在使用具有不同成本的谓词调用allMatch之前对Java流进行排序会带来什么好处吗?

在应用程序运行时更改LookAndFeel

如何在Maven Central上部署?

接受类及其接口的Java类型(矛盾)

在权限列表中找不到我的应用程序

在Java中比较同一多维数组的两个不同的字符串元素

[jdk21][Foreign Function&;Memory API]MemoryLayout::varHandle通过可变数组进行 struct 化的问题

URI构造函数错误?

如何使用Jackson读取以方括号开头的JSON?