Проверьте, является ли BigDecimal целочисленным значением

Вы можете написать:

$(document).ready(function() {
    $("#select-all-teammembers").click(function() {
        var checkBoxes = $("input[name=recipients\\[\\]]");
        checkBoxes.prop("checked", !checkBoxes.prop("checked"));
    });                 
});

До jQuery 1.6, когда у нас было только attr () , а не prop () , мы писали:

checkBoxes.attr("checked", !checkBoxes.attr("checked"));

Но prop() имеет лучшую семантику, чем attr(), когда применяется к «логическим» атрибутам HTML, поэтому обычно предпочтительнее в этой ситуации.

46
задан Adamski 3 July 2009 в 11:28
поделиться

3 ответа

В зависимости от источника / использования ваших BigDecimal значений может быть быстрее сначала проверить, не <ли масштаб <= 0. Если да, то это определенно целое число в математическом смысле. Если оно> 0, то может по-прежнему быть целым числом, и потребуется более дорогой тест.

14
ответ дан 26 November 2019 в 20:20
поделиться

Одна из возможностей должна заключаться в проверке если scale () равно нулю или отрицательно. В этом случае BigDecimal не должно иметь цифр после десятичной точки, а число должно быть математическим целым числом, если я правильно понимаю ваш вопрос.

Обновление : если положительное, оно все равно может быть целым числом, но вы не можете сэкономить создание дополнительных объектов для дальнейшей тщательной проверки в этом случае. Пример такого случая приведен в методе javadoc stripTrailingZeros () (спасибо Иоахиму за подсказку в его ответе).

2
ответ дан 26 November 2019 в 20:20
поделиться

Вы можете использовать это (просто обобщая другие ответы):

private boolean isIntegerValue(BigDecimal bd) {
  return bd.stripTrailingZeros().scale() <= 0;
}
5
ответ дан 26 November 2019 в 20:20
поделиться
Другие вопросы по тегам:

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