Как я могу обработать числа, больше, чем 17 цифр в Firefox/IE7?

Если вы используете ориентацию getResources (). GetConfiguration (). На некоторых устройствах, вы ошибетесь. Мы использовали этот подход первоначально в http://apphance.com . Благодаря удаленному ведению журнала Apphance мы могли видеть его на разных устройствах и увидели, что фрагментация играет здесь свою роль. Я видел странные случаи: например, чередование портрета и квадрата (?!) в HTC Desire HD:

CONDITION[17:37:10.345] screen: rotation: 270 orientation: square
CONDITION[17:37:12.774] screen: rotation: 0 orientation: portrait
CONDITION[17:37:15.898] screen: rotation: 90
CONDITION[17:37:21.451] screen: rotation: 0
CONDITION[17:38:42.120] screen: rotation: 270 orientation: square

или отсутствие изменения ориентации вообще:

CONDITION[11:34:41.134] screen: rotation: 0
CONDITION[11:35:04.533] screen: rotation: 90
CONDITION[11:35:06.312] screen: rotation: 0
CONDITION[11:35:07.938] screen: rotation: 90
CONDITION[11:35:09.336] screen: rotation: 0

С другой стороны, width () и height () всегда корректны (они используются оконным менеджером, так что должно быть лучше). Я бы сказал, что лучшая идея - ВСЕГДА проверять ширину / высоту. Если вы подумаете о моменте, это именно то, что вы хотите - узнать, если ширина меньше высоты (портрет), наоборот (пейзаж) или они одинаковы (квадрат).

Тогда это сводится к этому простому коду:

public int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;
    if(getOrient.getWidth()==getOrient.getHeight()){
        orientation = Configuration.ORIENTATION_SQUARE;
    } else{ 
        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }
    }
    return orientation;
}

9
задан 6 July 2009 в 11:45
поделиться

4 ответа

В Javascript все числа являются числами с плавающей запятой IEEE двойной точности , что означает, что у вас есть только около 16 цифр точности; остальные 64 бита зарезервированы для экспоненты. Как отмечает Фабьен, вам придется поработать несколько уловок, чтобы добиться большей точности, если вам нужны все 64 бита.

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

Как отмечают другие, JS реализует двойные значения, поэтому вам придется искать в другом месте, чтобы обрабатывать большие числа. BigInt - это библиотека для вычислений с произвольной точностью для целых чисел.

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

Я думаю, вам нужно рассматривать их как строки, если вы достигли предела Javascript ( см. Здесь )

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

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