По модулю в JavaScript - большое количество

лучший и простой способ ......

void dialog(){

        AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
        //alt_bld.setIcon(R.drawable.icon);
        alt_bld.setTitle("Select a Group Name");
        alt_bld.setSingleChoiceItems(grpname, -1, new DialogInterface
                .OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                Toast.makeText(getApplicationContext(),
                        "Group Name = "+grpname[item], Toast.LENGTH_SHORT).show();
                dialog.dismiss();// dismiss the alertbox after chose option

            }
        });
        AlertDialog alert = alt_bld.create();
        alert.show();


///// grpname is a array where data is stored... 


    }
17
задан Benedikt 30 May 2009 в 15:15
поделиться

3 ответа

Куча улучшений в версии Бенедикта: "cRest += '' + cDivident;" - исправление; parseInt(divisor) позволяет передавать оба аргумента как строки; проверка пустой строки в конце заставляет всегда возвращать числовые значения; добавлены операторы var, чтобы не использовать глобальные переменные; преобразован foreach в старый стиль for, чтобы он работал в браузерах со старым Javascript; исправлена ошибка cRest == 0; (спасибо @Dan.StackOverflow).

function modulo (divident, divisor) {
    var cDivident = '';
    var cRest = '';

    for (var i in divident ) {
        var cChar = divident[i];
        var cOperator = cRest + '' + cDivident + '' + cChar;

        if ( cOperator < parseInt(divisor) ) {
                cDivident += '' + cChar;
        } else {
                cRest = cOperator % divisor;
                if ( cRest == 0 ) {
                    cRest = '';
                }
                cDivident = '';
        }

    }
    cRest += '' + cDivident;
    if (cRest == '') {
        cRest = 0;
    }
    return cRest;
}
10
ответ дан 30 November 2019 в 11:32
поделиться

похоже, что вы стали жертвой этого: Какое наибольшее целочисленное значение JavaScript, к которому Number может перейти без потери точности?

просто повторить, что находится в другом потоке :

это 64-битные значения с плавающей запятой, наибольшее точное целое значение 2 ^ 53. однако из раздела спецификации [8.5: Number Type]:

Некоторые операторы ECMAScript работают только с целыми числами в диапазоне от –2 ^ 31 до 2 ^ 31-1 включительно или в диапазоне от 0 до 2 ^ 32-1 , включительно. Эти операторы принимают любое значение типа Number, но сначала преобразуют каждое такое значение в одно из целых чисел 2 ^ 32. См. Описания операторов ToInt32 и ToUint32 в разделах 0 и 0, соответственно

Но кредит там, где полагается. Джимми получил оттуда общепринятый ответ за то, что делал легкую работу (ну, гугл).

5
ответ дан 30 November 2019 в 11:32
поделиться

Наконец, мое решение:

function modulo (divident, divisor) {
    cDivident = '';
    cRest = '';

    for each ( var cChar in divident ) {
        cOperator = cRest + '' + cDivident + '' + cChar;

        if ( cOperator < divisor ) {
            cDivident += '' + cChar;
        } else {
            cRest = cOperator % divisor;
            if ( cRest == 0 ) cRest = '';
            cDivident = '';
        }

    }

    return cRest;
}
4
ответ дан 30 November 2019 в 11:32
поделиться
Другие вопросы по тегам:

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