Design: Десятичный/денежный тип

Созданный на 6 авг. 2017  ·  3Комментарии  ·  Источник: WebAssembly/design

Есть много хороших документов WASM о типе Float и его арифметике с дробной частью (на основе 2) ^ (-1).

В течение многих лет программисты использовали обходные пути в JavaScript, чтобы добиться правильного вычисления десятичной дроби из-за единственного 64-битного типа с плавающей запятой для всех числовых значений.
Планируется ли поддержка типа __Money__ или __Decimal__ ( пример 1 , пример 2 )?

Практически десятичный тип важен для большинства бизнес-приложений. Его поддерживают многие языки, платформы и базы данных.

Самый полезный комментарий

Я не думаю, что OP запрашивает поддержку BCD, а скорее поддержку десятичной дроби с плавающей запятой . В остальном, я согласен с @jfbastien , нам следует опасаться поддержки чего-то, что не всегда доступно на оборудовании. Согласно странице Википедии, которую я цитировал, пока это реализовано только на оборудовании IBM. ISTR ходили слухи о том, что Intel занимается этим, но, похоже, ничего не материализовалось.

Похоже, что Intel предлагает библиотеку эмуляции, которая, как утверждается, является переносимой, поэтому, предположительно, C можно скомпилировать в Wasm. Я вообще не изучал это, даже не для того, чтобы убедиться, что мое предположение верно.

Все 3 Комментарий

WebAssembly предоставляет общие аппаратные функции, когда эти функции ускоряют использование. Как правило, он не раскрывает ничего другого: ожидается, что полезные функции будут построены с использованием этих примитивов.

Поэтому мы оцениваем двоично-десятичное число следующим образом:

  • Широко ли он доступен в современных ISA? Нет. Это было в более старой версии x86 и недоступно в длинном режиме.
  • Это быстрее? Можно привести аргумент, что иногда выражение намерения (например, "выполнить добавление BCD") может привести к улучшению кода, поскольку в противном случае намерение теряется, и компилятор не может вернуть его обратно. Здесь это не совсем так, но я хочу быть убежденным в обратном.

Обратите внимание, что насколько полезна функция, просто не имеет значения для этого. Если это полезно, можно создать библиотеку (или, что еще лучше, некоторую кодовую базу C++ можно скомпилировать в WebAssembly). Полезность и наличие сторонника этой функции влияют только на то, когда мы до нее доберемся.

Я не думаю, что OP запрашивает поддержку BCD, а скорее поддержку десятичной дроби с плавающей запятой . В остальном, я согласен с @jfbastien , нам следует опасаться поддержки чего-то, что не всегда доступно на оборудовании. Согласно странице Википедии, которую я цитировал, пока это реализовано только на оборудовании IBM. ISTR ходили слухи о том, что Intel занимается этим, но, похоже, ничего не материализовалось.

Похоже, что Intel предлагает библиотеку эмуляции, которая, как утверждается, является переносимой, поэтому, предположительно, C можно скомпилировать в Wasm. Я вообще не изучал это, даже не для того, чтобы убедиться, что мое предположение верно.

Спасибо @jfbastien и @lars-t-hansen за ответы.

Теперь ясно, что эта проблема не связана с WASM и должна быть адресована другой группе.

Библиотека может решить эту проблему.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Комментарии

aaabbbcccddd00001111 picture aaabbbcccddd00001111  ·  3Комментарии

nikhedonia picture nikhedonia  ·  7Комментарии

badumt55 picture badumt55  ·  8Комментарии

void4 picture void4  ·  5Комментарии