Продолжительность. Зачем выполнять дополнительную работу, если секунды отрицательны? ⇐ JAVA
-
Anonymous
Продолжительность. Зачем выполнять дополнительную работу, если секунды отрицательны?
Это метод toNanos в классе Duration
public long toNanos() { длинные tempSeconds = секунды; длинный tempNanos = nanos; // TODO: Меня это смущает если (tempSeconds < 0) { // изменяем секунды и значение nano на // обрабатываем случай Long.MIN_VALUE tempSeconds = tempSeconds + 1; tempNanos = tempNanos - NANOS_PER_SECOND; } длинный totalNanos = Math.multiplyExact(tempSeconds, NANOS_PER_SECOND); totalNanos = Math.addExact(totalNanos, tempNanos); вернуть тоталНанос; } Я не мог понять, зачем выполнять дополнительную работу, если секунды отрицательны.
Максимальное количество положительных чисел – 2^63-1, а минимальное количество отрицательных чисел — 2^63, похоже, что оно передает -2^63s,- от 1ns до -2^63+1s,1000_000_000-1ns, но в конечном итоге он должен участвовать в вычислении. На мой взгляд, это бессмысленно, потому что Math.multiplyExact и Math.addExact выдадут исключение при переполнении чисел, оно не изменится независимо от того, существовало ли решение или нет
Это метод toNanos в классе Duration
public long toNanos() { длинные tempSeconds = секунды; длинный tempNanos = nanos; // TODO: Меня это смущает если (tempSeconds < 0) { // изменяем секунды и значение nano на // обрабатываем случай Long.MIN_VALUE tempSeconds = tempSeconds + 1; tempNanos = tempNanos - NANOS_PER_SECOND; } длинный totalNanos = Math.multiplyExact(tempSeconds, NANOS_PER_SECOND); totalNanos = Math.addExact(totalNanos, tempNanos); вернуть тоталНанос; } Я не мог понять, зачем выполнять дополнительную работу, если секунды отрицательны.
Максимальное количество положительных чисел – 2^63-1, а минимальное количество отрицательных чисел — 2^63, похоже, что оно передает -2^63s,- от 1ns до -2^63+1s,1000_000_000-1ns, но в конечном итоге он должен участвовать в вычислении. На мой взгляд, это бессмысленно, потому что Math.multiplyExact и Math.addExact выдадут исключение при переполнении чисел, оно не изменится независимо от того, существовало ли решение или нет
Мобильная версия