Design: 小数/货币类型

创建于 2017-08-06  ·  3评论  ·  资料来源: WebAssembly/design

有很多关于浮点类型及其算术的优秀 WASM 文档,其中小数部分为 (2-based)^(-1)。

多年来,由于所有数字只有64 位浮点类型,程序员一直在使用 JavaScript 中的变通方法来实现正确的小数计算。
是否有计划支持 __Money__ 类型或 __Decimal__ 类型(示例 1示例 2 )?

实际上,十进制类型对于大多数业务应用程序都很重要。 许多语言、平台和数据库都支持它。

最有用的评论

我不认为 OP 要求 BCD 支持,而是要求支持decimal floating point 。 除此之外,我同意@jfbastien ,我们应该警惕支持硬件中不常见的东西。 根据我引用的 Wikipedia 页面,目前只有 IBM 硬件实现了它。 ISTR 有关于英特尔追求它的传言,但似乎没有任何实现。

英特尔似乎提供了一个声称是可移植的仿真库,因此大概是可以编译为 Wasm 的 C。 我根本没有调查过,甚至没有验证我的假设是否正确。

所有3条评论

当这些特性使用例更快时,WebAssembly 会公开常见的硬件特性。 它通常不会公开任何其他内容:预计有用的功能是使用这些原语构建的。

因此,我们将按如下方式评估二进制编码的十进制:

  • 它在现代 ISA 中是否广泛使用? 不,它在较旧的 x86 中,并且在长模式下不可用。
  • 它更快吗? 有时,表达意图(例如“执行 BCD 添加”)可能会导致更好的代码,因为否则会丢失意图并且编译器无法取回它。 这不是很明显的情况,但我愿意被说服。

请注意,功能的有用程度与此无关。 如果有用,则可以构建一个库(或者更好的是,可以将一些 C++ 代码库编译为 WebAssembly)。 该功能的有用性和拥护者的存在只会影响我们何时使用它。

我不认为 OP 要求 BCD 支持,而是要求支持decimal floating point 。 除此之外,我同意@jfbastien ,我们应该警惕支持硬件中不常见的东西。 根据我引用的 Wikipedia 页面,目前只有 IBM 硬件实现了它。 ISTR 有关于英特尔追求它的传言,但似乎没有任何实现。

英特尔似乎提供了一个声称是可移植的仿真库,因此大概是可以编译为 Wasm 的 C。 我根本没有调查过,甚至没有验证我的假设是否正确。

@jfbastien和@lars-t-hansen 为您解答。

现在很明显,这个问题与 WASM 无关,应该解决给另一个小组。

图书馆可以解决这个问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Thaina picture Thaina  ·  8评论

arunetm picture arunetm  ·  7评论

ghost picture ghost  ·  7评论

cretz picture cretz  ·  5评论

frehberg picture frehberg  ·  6评论