gpt4 book ai didi

java - Double#doubleToLongBits(double) 值排序

转载 作者:行者123 更新时间:2023-11-30 04:34:22 25 4
gpt4 key购买 nike

如果有两个 double 值(a 和 b),其中

  1. 两者都不是负数
  2. 两者都不是 NaN 也不是任何 (POSITIVE|NEGATIVE)_INFINITY
  3. a>=b

总是这样吗

  1. Double.doubleToLongBits(a) >= Double.doubleToLongBits(b)

IEEE 754 的内容是否存在任何可能的错误?

我打算将两个正(非零)整数的速率值存储为长整型值,而不是 double 值。

@Entity
public class ExchangeRate {

@PrePersist
protected void prePersist() {
targetAmountPerSourceAmount = Double.doubleToLongBits(
(double) targetAmount / (double) sourceAmount);
}

@Basic
private long targetAmountPerSourceAmount;

@Min(1)
@Max(Short.MAX_VALUE)
private short targetAmount;

@Min(1)
@Max(Short.MAX_VALUE)
private short sourceAmount;
}

最佳答案

好吧,零会给你带来问题,因为 +0.0 == -0.0 但它们有不同的表示形式。

    double a = -0.0;
double b = +0.0;
System.out.println("a == b? " + (a == b)); // true
long aLong = Double.doubleToLongBits(a);
long bLong = Double.doubleToLongBits(b);
System.out.println("a' >= b'? " + (aLong >= bLong)); // false

关于java - Double#doubleToLongBits(double) 值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com