All streams
Search
Write a publication
Pull to refresh
17
0
Смирнов Сергей @Serginio1

Программист

Send message
Вот когда кажется
https://learn.javascript.ru/number
Все числа в JavaScript, как целые так и дробные, имеют тип Number и хранятся в 64-битном формате IEEE-754, также известном как «double precision».

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Number

Number.isSafeInteger()  Определяет, является ли переданное значение безопасным целым числом (числом в диапазоне от -(2:53 — 1) до 2^53 — 1).

https://msdn.microsoft.com/ru-ru/library/364x0z75.aspx

Ключевое слово decimal обозначает 128-разрядный тип данных. По сравнению с типами данных с плавающей запятой, диапазон значений типа decimal меньше, а точность выше, благодаря чему этот тип подходит для финансовых расчетов. В следующей таблице представлен приблизительный диапазон значений и точность для типа decimal

Мы то говорим о браузерах. А для поддержки пайпов нужно писать плагин.

Для воспроизведения моего примера нужно вызвать синхронно

var request = new XMLHttpRequest();
request.open('GET', '/bar/foo.txt', false);  // `false` makes the request synchronous
request.send(null);

if (request.status === 200) {
  result+=Number(request.responseText);
}


Или предлагай свой вариант.
Кстати говоря о out process мы то говорим о поддержке браузером протоколов.
А в нем только HTTP. Могу завтра проверить скрорсть передачи и получении числа.
Если Number поддерживает Decimal, то могу передавать на строну CEF бинарные данные, из CEF преобразовывать в объект со строковым представлением числа и флагом, что это Decimal. На стороне JS парсить по аналогии с Json. Нет проблем.
Все я прекращаю диалог. Совершенно нет времени, а диалог совсем не конструктивный. Списибо за общение.
В CEF есть только Double и Int
Это ты все ратуешь за вэб и HTTP сервисы/
Ну так я и пушу на TypeScript,C++
,C#
Дааа? а как данные передаются?

Угу и как JS сконвертирует число которое не подходит под Double?
Еще раз причем масштабирование и локальный компьютер?
Зачем мне вообще вебсервисы если я все выполняю локально?

Я 1С ник и программирую на многих языках.
Ну так ты предлагаешь и сделай тесты и сравним.
При этом напиши удобную сериализацию десериализацию из браузера.
Еще раз сейчас никак, а как это я реализую или реализую ли вообще вариантов куча.

Твои предложения по текущей ситуации
Угу JSON это та же строка. Но вот только Decimal и Double разные вещи.
Вот а как раз и предлагаю замену COM на линукс.
И какие проблемы с масштабированием на локальном компьютере?
А меня и их очень волнуют.
Поверь 1С никам это доставляет большие проблемы. Таких как я очень мало.

Опять же я тебя не заставляю пользоваться моим продуктом.
На основании COM Excel, 1C83.Application. 1C77.Application
Я в свое время мерял скорость она была ниже 1k/
Еще раз я тебе уже расписывал.
На стороне CEF я могу сохранить ссылку

Создадим класс

Class JSObjectProxy
{

//
CefRefPtr<CefV8Value> JSObject;
vector<JSObjectProxy*> listProxy;
CefRefPtr<CefV8Context> context; // Или один класс содержащий контекст

// Этот метод дергаем из .Net Core
 bool CallJsMethod(wchar_t* method,tvarstruct* params, int argCount,wchar_t** Error)
{

  здесь вызываем 
JSObject_->ExecuteFunctionWithContext(callback_context_, NULL, args, retval, exception, false)) 



и если функция возвращает в retval JSObject то создаем JSObjectProxy
и добавляем его в listProxy, что бы ссылка не обнулилась.
}

}

vector<JSObjectProxy*> это вектор который создается в Методе Exexute
члены которого будут уничтожаться при выходе из метода.
Иииии? Но вот данные храняться в Decimal. Что делать?
Ну и я передаю в виде строки.
Тогда и не говори, что COM никому не нужен.
Вэб или http сервисы значительнее неудобнее COM.
При этом с СОМ легко справится любой 1С ник. А вот писать Вэб или http севисы на других языках могут единицы.
Я тебе утверждаю на своих наблюдениях. Давай какой out process ты хочешь.
в JS нет понятия
void TestJS(dynamic v)



Там организация достаточно простая спис

class ХранилищеОбъектов
    {
        const int НачальноеКоличествоЭлементов = 64;
        ЭлементХранилища[] Элементы = new ЭлементХранилища[НачальноеКоличествоЭлементов];
        internal int КоличествоЭлементов = 0;
        int РазмерМассива = НачальноеКоличествоЭлементов;
        internal int FirstDeleted = -1;
        static SpinLock sl = new SpinLock();


Но нужно вручную из него удалять. К сожалению в JS нет финализатора или подсчета ссылок. В Electron есть

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity