比较十六进制字符串和双精度字符串
Comparing a Hex String with a Double
我正在尝试在条件语句中比较十六进制字符串和双精度字符串。我已经从字节数组转换为十六进制字符串。
double x = (Math.pow(2, 256));
byte[] h = null;
...
String hexString = bytesToHex(h); //converts byte array to hex string
double doubleValueOfHex = Double.valueOf(hexString); //convert hex string to double
然后我想做这样的事情...
if (doubleValueOfHex < x) {
...
} else {
...
我已经尝试将它们都转换为 BigDecimal
但我仍然 运行 遇到问题,
例如,如果我将 x
和 hexString
转换为 BigDecimal
BigDecimal a = new BigDecimal(hexString);
BigDecimal b = new BigDecimal(x);
if (a < b) {
...
} else {
...
它只是说运算符“<”对于参数类型是未定义的
感谢您的帮助
BigDecimals 不是基元,因此您不能使用“<”,但它们实现了 Comparable 接口。所以你的代码应该是这样的:
if (a.compareTo(b) < 0) {
....
}
参见:https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#compareTo(java.math.BigDecimal)
我正在尝试在条件语句中比较十六进制字符串和双精度字符串。我已经从字节数组转换为十六进制字符串。
double x = (Math.pow(2, 256));
byte[] h = null;
...
String hexString = bytesToHex(h); //converts byte array to hex string
double doubleValueOfHex = Double.valueOf(hexString); //convert hex string to double
然后我想做这样的事情...
if (doubleValueOfHex < x) {
...
} else {
...
我已经尝试将它们都转换为 BigDecimal
但我仍然 运行 遇到问题,
例如,如果我将 x
和 hexString
转换为 BigDecimal
BigDecimal a = new BigDecimal(hexString);
BigDecimal b = new BigDecimal(x);
if (a < b) {
...
} else {
...
它只是说运算符“<”对于参数类型是未定义的
感谢您的帮助
BigDecimals 不是基元,因此您不能使用“<”,但它们实现了 Comparable 接口。所以你的代码应该是这样的:
if (a.compareTo(b) < 0) {
....
}
参见:https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#compareTo(java.math.BigDecimal)