|
|
|
Численное сравнение объектов - потомков класса java.lang.Number: как ?
|
|||
|---|---|---|---|
|
#18+
Прямыми потомками класса Number, согласно доке, являются: BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short. Содержимое этих классов есть всегда только числа, т.е. можно сравнивать именно их абсолютные величины. Опять туплю: как это сделать в java ? Непосредственно сравнить Integer & Long нельзя - обломится на компиляции. Решил объехать через вызов метода в передачей ему Number-объектов - а фиг: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. - выдаёт false + false. Тогда как сравнивать-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 20:34:21 |
|
||
|
Численное сравнение объектов - потомков класса java.lang.Number: как ?
|
|||
|---|---|---|---|
|
#18+
Number нельзя сравнивать, так как они не реализуют Comparable. Все, что вы можете сделать, это вызвать на Number какой-нибудь публичный метод вроде intValue(), и сравнить вернувшиеся значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 20:43:51 |
|
||
|
Численное сравнение объектов - потомков класса java.lang.Number: как ?
|
|||
|---|---|---|---|
|
#18+
А не реализуют они интерфейс Comparable, потому что он задает отношение полного порядка, а такой порядок возможен не на всех Number. Например, на числах с плавающей запятой нет отношения полного порядка (NaN не меньше, не больше, и не равен никакому другому числу, и даже не равен самому себе). Более того, существуют mutable Numbers (например, AtomicInteger), для которых отношение порядка задавать дурной тон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 21:14:58 |
|
||
|
Численное сравнение объектов - потомков класса java.lang.Number: как ?
|
|||
|---|---|---|---|
|
#18+
А еще есть комплексные числа, для которых отношение порядка можно задавать по-разному. Если предположить, что все числа вещественные, то самое простое так (видимо еще нужна обработка специальных значений типа Nan, +0, -0, infinity и т.п.) Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 21:25:27 |
|
||
|
Численное сравнение объектов - потомков класса java.lang.Number: как ?
|
|||
|---|---|---|---|
|
#18+
cdtyjvNumber нельзя сравнивать, так как они не реализуют Comparable. Все, что вы можете сделать, это вызвать на Number какой-нибудь публичный метод вроде intValue(), и сравнить вернувшиеся значения. Здравствуй, великолепный очень-высокоуровневый объектноориентированный язык Java! В общем, я бы написал на Reflection некую функцию, которая бы брала типы данных обоих аргументов, пары, и, анализируя их, выбирала бы нужный способ сравнения. Когда типы одинаковы, всё понятно более менее. Когда разные -- надо преобразовывать к "старшему" типу и сравнивать их значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 13:13:24 |
|
||
|
Численное сравнение объектов - потомков класса java.lang.Number: как ?
|
|||
|---|---|---|---|
|
#18+
МужикА не реализуют они интерфейс Comparable, потому что он задает отношение полного порядка, а такой порядок возможен не на всех Number. Например, на числах с плавающей запятой нет отношения полного порядка (NaN не меньше, не больше, и не равен никакому другому числу, и даже не равен самому себе). Более того, существуют mutable Numbers (например, AtomicInteger), для которых отношение порядка задавать дурной тон. Ага, а исключение бросать в этом случае -- не ? Не додуматься было ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 13:14:24 |
|
||
|
Численное сравнение объектов - потомков класса java.lang.Number: как ?
|
|||
|---|---|---|---|
|
#18+
МужикА еще есть комплексные числа, для которых отношение порядка можно задавать по-разному. Как говорится, желание -- это тысяча способов, а нежелание -- тысяча причин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 13:15:39 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38423580&tid=2128441]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 473ms |

| 0 / 0 |
