Абсолютное значение в vb.net

Вы никогда не должны создавать индекс на пустой таблице, если Вы собираетесь в широком масштабе загрузить его правильный впоследствии. Индексы должны сохраняться, когда данные по таблице изменяются, поэтому вообразите, как будто для каждой вставки на таблице индекс повторно вычислялся (который является дорогой операцией). Загрузите таблицу сначала и создайте индекс после окончания с загрузкой. Это, было различие в производительности, идет.

9
задан Cyclone 1 September 2009 в 23:57
поделиться

4 ответа

Math.Abs ​​(val)

Ссылка MSDN

18
ответ дан 4 December 2019 в 07:35
поделиться

Рискуя быть отвергнутым, вы можете написать свой собственный метод абсолютного значения, в зависимости от того, для чего вы его используете. Следующий фрагмент кода (извините, это на C #, но применяется тот же принцип):

short i = -32768;
int iAbs = Math.Abs(i);

будет успешно компилироваться, но при запуске вторая строка выдаст исключение OverflowException с полезным сообщением «Отрицание минимального значения числа дополнения до двух является инвалид." В этом случае, поскольку i является типом short, компилятор выбирает перегрузку Math.Abs, которая принимает короткое замыкание и возвращает короткое замыкание, а +32768 не является допустимым коротким замыканием, поэтому метод выдает исключение, даже если вы думали, что ожидаете эта проблема заключается в том, что iAbs имеет тип int.

Этот фрагмент:

short i = -32768;
int iAbs = Math.Abs((int)i);

будет компилироваться и выполняться без исключения, но кодировать таким образом довольно неуклюже. По моему мнению, это очень скрытая ошибка, потому что она так редко встречается в реальном мире (поскольку существует только одно значение для каждого типа, который будет генерировать это исключение). Я, к сожалению, сталкиваюсь с этой ошибкой всякий раз, когда использую Math.Abs ​​для нормализации аудиоданных (обычно это массив short []), поэтому я привык писать свою собственную оболочку вокруг Math.Abs, которая обрабатывает все this для меня и просто возвращает double:

public double AbsThatDoesntSuck(short value)
{
    return Math.Abs((double)value);
}

с перегрузками для любого другого типа, который мне нужно обработать. Я как бы понимаю, почему Math.Abs ​​был написан таким образом, но он определенно может укусить неосведомленных.

Abs для нормализации аудиоданных (обычно это массив short []), поэтому я привык писать свою собственную оболочку для Math.Abs, которая обрабатывает все это за меня и просто возвращает double:

public double AbsThatDoesntSuck(short value)
{
    return Math.Abs((double)value);
}

с перегрузки для любого другого типа, с которым мне нужно справиться. Я как бы понимаю, почему Math.Abs ​​был написан таким образом, но он определенно может укусить неосведомленных.

Abs для нормализации аудиоданных (обычно это массив short []), поэтому я привык писать свою собственную оболочку для Math.Abs, которая обрабатывает все это за меня и просто возвращает double:

public double AbsThatDoesntSuck(short value)
{
    return Math.Abs((double)value);
}

с перегрузки для любого другого типа, с которым мне нужно справиться. Я вроде понимаю, почему Math.Abs ​​был написан таким образом, но он определенно может укусить неосведомленных.

9
ответ дан 4 December 2019 в 07:35
поделиться

Используйте Math.Abs ​​.

1
ответ дан 4 December 2019 в 07:35
поделиться

Функция - Math.Abs ​​

1
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: